Partager via


Out-File

Envoie la sortie vers un fichier.

Syntaxe

ByPath (Par défaut)

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

ByLiteralPath

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

Description

L’applet de commande Out-File 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 stdout flux 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 de commande Get-Process obtient la liste des processus en cours d’exécution sur l’ordinateur local. Les objets Process sont envoyés au pipeline à l’applet de commande Out-File. Out-File utilise le paramètre FilePath et crée un fichier dans le répertoire actif nommé Process.txt. La commande Get-Content 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 de commande Get-Process obtient la liste des processus en cours d’exécution sur l’ordinateur local. Les objets Process sont envoyés au pipeline à l’applet de commande Out-File. 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 de commande Get-Process 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 au 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 de commande Out-File lorsque vous n’êtes pas dans un lecteur de fournisseur fileSystem . Utilisez l’applet de commande Get-PSProvider pour afficher les fournisseurs sur votre ordinateur local. Pour plus d’informations, voir 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 commande Set-Location utilise le paramètre Path pour définir l’emplacement actuel sur le fournisseur de Registre Alias:. L’applet de commande Get-Location affiche le chemin d’accès complet de Alias:. Get-ChildItem envoie des objets vers le pipeline à l’applet de commande Out-File. 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 de commande Get-Content 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 paramètre Width pour tous les appels de Out-File et les opérateurs de 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.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Confirm

Vous invite à confirmer avant d’exécuter l’applet de commande.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False
Alias:cf

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Encoding

Spécifie le type d’encodage 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 de 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 avec primauté des octets de poids fort.
  • bigendianutf32: encode au format UTF-32 avec primauté des octets de poids fort.
  • oem: utilise l’encodage par défaut pour les programmes MS-DOS et console.
  • unicode: encode au format UTF-16 avec primauté des octets de poids faible.
  • utf7: encode au format UTF-7.
  • utf8: encode au format UTF-8.
  • utf8BOM: encode au format UTF-8 avec indicateur d'ordre des octets (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 des ID numériques de pages de codes inscrites (comme -Encoding 1251) ou des noms de chaînes de pages de codes inscrites (comme -Encoding "windows-1251"). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.

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

Remarque

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

Propriétés du paramètre

Type:Encoding
Valeur par défaut:UTF8NoBOM
Valeurs acceptées:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:1
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-FilePath

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

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:Chemin

Jeux de paramètres

ByPath
Position:0
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Force

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

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-InputObject

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

Propriétés du paramètre

Type:PSObject
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-LiteralPath

Spécifie le chemin d’accès au fichier de sortie. Le paramètre LiteralPath est utilisé exactement comme il est typé. 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 la section sur les règles de citation.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:PSPath, DP

Jeux de paramètres

ByLiteralPath
Position:Named
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:True
Valeur des arguments restants: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.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:NoOverwrite

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants: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 caractères de sortie.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-WhatIf

Affiche ce qui se passerait si l’applet de commande s’exécute. L’applet de commande n’est pas exécutée.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False
Alias:Wi

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Width

Spécifie le nombre maximal de caractères dans chaque ligne de sortie. Tous les caractères supplémentaires sont tronqués, et non encapsulés. 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 de Out-File ainsi que les opérateurs de redirection (> et >>), définissez $PSDefaultParameterValues['Out-File:Width'] = 2000 avant d’utiliser Out-File.

Propriétés du paramètre

Type:Int32
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

CommonParameters

Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.

Entrées

PSObject

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

Sorties

None

Cette applet de commande ne retourne aucune sortie.

Notes

Les objets d’entrée sont automatiquement mis en forme comme dans le terminal, mais vous pouvez utiliser une applet de commande Format-* 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 de commande Out-File, 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 de commande Out-File.

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 d’ANSI passée à Out-File peut être modifiée en fonction du paramètre de la propriété $PSStyle.OutputRendering. Pour plus d’informations, consultez about_ANSI_Terminals.