Partager via


Out-File

Envoie la sortie vers un fichier.

Syntaxe

Out-File
   [-FilePath] <string>
   [[-Encoding] <Encoding>]
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Out-File
   [[-Encoding] <Encoding>]
   -LiteralPath <string>
   [-Append]
   [-Force]
   [-NoClobber]
   [-Width <int>]
   [-NoNewline]
   [-InputObject <psobject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

L’applet Out-File de commande envoie la sortie à un fichier. Il utilise implicitement le système de mise en forme de PowerShell pour écrire dans le fichier. Le fichier reçoit la même représentation d’affichage que le terminal. Cela signifie que la sortie peut ne pas être idéale pour le traitement par programmation, sauf si tous les objets d’entrée sont des chaînes.

La redirection de la sortie d’une commande PowerShell (applet de commande, fonction, script) à l’aide de l’opérateur de redirection (>) est fonctionnellement équivalente à la piping vers Out-File sans paramètres supplémentaires. PowerShell 7.4 a modifié le comportement de l’opérateur de redirection lorsqu’il est utilisé pour rediriger le flux stdout d’une commande native. Pour plus d’informations sur la redirection, consultez about_Redirection.

Exemples

Exemple 1 : Envoyer une sortie et créer un fichier

Cet exemple montre comment envoyer une liste des processus de l’ordinateur local à un fichier. Si le fichier n’existe pas, Out-File crée le fichier dans le chemin d’accès spécifié.

Get-Process | Out-File -FilePath .\Process.txt
Get-Content -Path .\Process.txt

NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
     29    22.39      35.40      10.98   42764   9 Application
     53    99.04     113.96       0.00   32664   0 CcmExec
     27    96.62     112.43     113.00   17720   9 Code

L’applet Get-Process de commande obtient la liste des processus en cours d’exécution sur l’ordinateur local. Les objets Process sont envoyés au pipeline à l’applet Out-File de commande. Out-File utilise le paramètre FilePath et crée un fichier dans le répertoire actif nommé Process.txt. La Get-Content commande obtient le contenu du fichier et l’affiche dans la console PowerShell.

Exemple 2 : Empêcher un fichier existant d’être remplacé

Cet exemple empêche le remplacement d’un fichier existant. Par défaut, Out-File remplace les fichiers existants.

Get-Process | Out-File -FilePath .\Process.txt -NoClobber

Out-File : The file 'C:\Test\Process.txt' already exists.
At line:1 char:15
+ Get-Process | Out-File -FilePath .\Process.txt -NoClobber
+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

L’applet Get-Process de commande obtient la liste des processus en cours d’exécution sur l’ordinateur local. Les objets Process sont envoyés au pipeline à l’applet Out-File de commande. Out-File utilise le paramètre FilePath et tente d’écrire dans un fichier dans le répertoire actif nommé Process.txt. Le paramètre NoClobber empêche le fichier d’être remplacé et affiche un message indiquant que le fichier existe déjà.

Exemple 3 : Envoyer la sortie à un fichier au format ASCII

Cet exemple montre comment encoder la sortie avec un type d’encodage spécifique.

$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50

L’applet Get-Process de commande obtient la liste des processus en cours d’exécution sur l’ordinateur local. Les objets Process sont stockés dans la variable. $Procs Out-File utilise le paramètre FilePath et crée un fichier dans le répertoire actif nommé Process.txt. Le paramètre InputObject transmet les objets de processus dans $Procs le fichier Process.txt. Le paramètre d’encodage convertit la sortie au format ASCII . Le paramètre Width limite chaque ligne du fichier à 50 caractères afin que certaines données puissent être tronquées.

Exemple 4 : Utiliser un fournisseur et envoyer une sortie à un fichier

Cet exemple montre comment utiliser l’applet Out-File de commande lorsque vous n’êtes pas dans un lecteur de fournisseur FileSystem . Utilisez l’applet Get-PSProvider de commande pour afficher les fournisseurs sur votre ordinateur local. Pour plus d’informations, consultez about_Providers.

PS> Set-Location -Path Alias:

PS> Get-Location

Path
----
Alias:\

PS> Get-ChildItem | Out-File -FilePath C:\TestDir\AliasNames.txt

PS> Get-Content -Path C:\TestDir\AliasNames.txt

CommandType     Name
-----------     ----
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           cat -> Get-Content

La Set-Location commande utilise le paramètre Path pour définir l’emplacement actuel sur le fournisseur Alias:de Registre. L’applet Get-Location de commande affiche le chemin d’accès complet pour Alias:. Get-ChildItem envoie des objets vers le bas du pipeline à l’applet Out-File de commande. Out-File utilise le paramètre FilePath pour spécifier le chemin d’accès complet et le nom de fichier de la sortie, C :\TestDir\AliasNames.txt. L’applet Get-Content de commande utilise le paramètre Path et affiche le contenu du fichier dans la console PowerShell.

Exemple 5 : Définir la largeur de sortie du fichier pour l’étendue entière

Cet exemple utilise $PSDefaultParameterValues pour définir le Width paramètre pour tous les appels des opérateurs de Out-File redirection (> et >>) sur 2000. Cela garantit que partout dans l’étendue actuelle que vous extrayez les données mises en forme du tableau dans un fichier, PowerShell utilise une largeur de ligne de 2000 au lieu d’une largeur de ligne déterminée par la largeur de la console de l’hôte PowerShell.

function DemoDefaultOutFileWidth() {
    try {
        $PSDefaultParameterValues['out-file:width'] = 2000

        $logFile = "$pwd\logfile.txt"

        Get-ChildItem Env:\ > $logFile

        Get-Service -ErrorAction Ignore |
            Format-Table -AutoSize |
            Out-File $logFile -Append

        Get-Process | Format-Table Id,SI,Name,Path,MainWindowTitle >> $logFile
    }
    finally {
        $PSDefaultParameterValues.Remove('out-file:width')
    }
}

DemoDefaultOutFileWidth

Pour plus d’informations sur $PSDefaultParameterValues, consultez about_Preference_Variables.

Paramètres

-Append

Ajoute la sortie à la fin d’un fichier existant.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Confirm

Vous demande une confirmation avant d’exécuter la commande cmdlet.

Type:SwitchParameter
Alias:cf
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Encoding

Spécifie le type de codage du fichier cible. La valeur par défaut est utf8NoBOM.

Les valeurs acceptables pour ce paramètre sont les suivantes :

  • ascii: utilise l’encodage pour le jeu de caractères ASCII (7 bits).
  • ansi: utilise l’encodage pour la page de codes ANSI de la culture actuelle. Cette option a été ajoutée dans PowerShell 7.4.
  • bigendianunicode: encode au format UTF-16 à l’aide de l’ordre d’octet big-endian.
  • bigendianutf32: encode au format UTF-32 à l’aide de l’ordre d’octet big-endian.
  • oem: utilise l’encodage par défaut pour les programmes MS-DOS et console.
  • unicode: encode au format UTF-16 à l’aide de l’ordre d’octet little-endian.
  • utf7: encode au format UTF-7.
  • utf8: encode au format UTF-8.
  • utf8BOM: encode au format UTF-8 avec marque d’ordre d’octet (BOM)
  • utf8NoBOM: encode au format UTF-8 sans marque d’ordre d’octet (BOM)
  • utf32: encode au format UTF-32.

À compter de PowerShell 6.2, le paramètre d’encodage autorise également les ID numériques des pages de codes inscrites (par -Encoding 1251exemple) ou des noms de chaînes de pages de codes inscrites (par exemple -Encoding "windows-1251"). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.

À compter de PowerShell 7.4, vous pouvez utiliser la Ansi valeur du paramètre Encodage pour passer l’ID numérique de la page de codes ANSI de la culture actuelle sans avoir à le spécifier manuellement.

Remarque

UTF-7* n’est plus recommandé à utiliser. À partir de PowerShell 7.1, un avertissement est écrit si vous spécifiez utf7 le paramètre Encodage .

Type:Encoding
Valeurs acceptées:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:1
Valeur par défaut:UTF8NoBOM
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-FilePath

Spécifie le chemin d'accès au fichier de sortie.

Type:String
Alias:Path
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Force

Remplace l’attribut en lecture seule et remplace un fichier en lecture seule existant. Le paramètre Force ne remplace pas les restrictions de sécurité.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-InputObject

Spécifie les objets à écrire dans le fichier. Entrez une variable contenant les objets, ou tapez une commande ou une expression qui les obtient.

Type:PSObject
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-LiteralPath

Spécifie le chemin d'accès au fichier de sortie. Le paramètre LiteralPath est utilisé exactement comme il est tapé. Les caractères génériques ne sont pas acceptés. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme séquences d’échappement. Pour plus d’informations, consultez about_Quoting_Rules.

Type:String
Alias:PSPath, LP
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-NoClobber

NoClobber empêche un fichier existant d’être remplacé et affiche un message indiquant que le fichier existe déjà. Par défaut, si un fichier existe dans le chemin d’accès spécifié, Out-File remplace le fichier sans avertissement.

Type:SwitchParameter
Alias:NoOverwrite
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-NoNewline

Spécifie que le contenu écrit dans le fichier ne se termine pas par un caractère de nouvelle ligne. Les représentations sous forme de chaîne des objets d’entrée sont concaténées pour former la sortie. Aucun espace ou nouvelle ligne n’est inséré entre les chaînes de sortie. Aucune nouvelle ligne n’est ajoutée après la dernière chaîne de sortie.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-WhatIf

Montre ce qui se passe en cas d’exécution de la commande cmdlet. La commande cmdlet n’est pas exécutée.

Type:SwitchParameter
Alias:wi
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Width

Spécifie le nombre maximal de caractères dans chaque ligne de sortie. Tous les caractères supplémentaires sont tronqués, pas renvoyés à la ligne. Si ce paramètre n’est pas utilisé, la largeur est déterminée par les caractéristiques de l’hôte. La valeur par défaut de la console PowerShell est de 80 caractères. Si vous souhaitez contrôler la largeur de tous les appels ainsi que les opérateurs de Out-File redirection (> et >>), définis $PSDefaultParameterValues['out-file:width'] = 2000 avant d’utiliser Out-File.

Type:Int32
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

PSObject

Vous pouvez diriger n’importe quel objet vers cette applet de commande.

Sorties

None

Cette applet de commande ne retourne pas de sortie.

Notes

Les objets d’entrée sont automatiquement mis en forme comme dans le terminal, mais vous pouvez utiliser une Format-* applet de commande pour contrôler explicitement la mise en forme de la sortie dans le fichier. Par exemple, Get-Date | Format-List | Out-File out.txt

Pour envoyer la sortie d’une commande PowerShell à l’applet Out-File de commande, utilisez le pipeline. Vous pouvez également stocker des données dans une variable et utiliser le paramètre InputObject pour transmettre des données à l’applet Out-File de commande.

Out-File enregistre des données dans un fichier, mais elle ne produit aucun objet de sortie dans le pipeline.

PowerShell 7.2 a ajouté la possibilité de contrôler le rendu des séquences d’échappement ANSI. La sortie décorée ansI transmise Out-File peut être modifiée en fonction du paramètre de la $PSStyle.OutputRendering propriété. Pour plus d’informations, consultez about_ANSI_Terminals.