Rediriger la sortie PowerShell vers un fichier avec Out-File : Un guide complet

Si vous êtes à la recherche d’une commande PowerShell qui peut stocker la sortie dans un fichier texte, vous avez de la chance. Vous êtes sur le point d’apprendre comment utiliser la commande Out-File de PowerShell ainsi que son populaire paramètre Out-File -Append!

Comment fonctionne Out-File?

Cette commande PowerShell est simple en nature ; son unique but est de stocker la sortie reçue et de la sauvegarder dans un fichier texte.

Elle a été conçue pour remplacer l’opérateur de redirection de sortie standard (>). Même depuis l’époque de DOS, nous pouvions rediriger la sortie vers un fichier. Cette commande est la manière PowerShell de le faire.

La commande Out-File est généralement utilisée à la fin du pipeline PowerShell. Son seul but est d’envoyer la sortie brute directement vers un fichier texte sans aucune considération. Il y a peu de façons de personnaliser la manière dont cette sortie est écrite.

Envoyer la sortie vers un fichier

Supposons que vous ayez un script qui renvoie une liste de tous les services Windows sur votre ordinateur. Lorsque vous exécutez Get-Service, vous recevrez tous les objets auxquels vous pourriez vous attendre sur la console.

Mais peut-être souhaitez-vous sauvegarder cette sortie dans un fichier texte. La commande Out-File est une excellente façon de le faire. Vous pouvez l’utiliser en redirigeant presque n’importe quoi vers elle via le pipeline.

Vous pouvez voir ci-dessous que la sortie de la commande Get-Service a été envoyée au cmdlet qui a créé un fichier texte appelé Services.txt contenant exactement ce que vous voyez sur la console.

PS> Get-Service | Out-File -FilePath C:\Services.txt
PS> Get-Content C:\Services.txt
Status   Name               DisplayName

Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity
Stopped  Appinfo            Application Information
Stopped  AppMgmt            Application Management
<SNIP>

Ajout à un fichier

Par défaut, cela écrase tout dans le fichier texte spécifié via le paramètre FilePath. Cependant, vous pouvez contourner ce comportement en utilisant le paramètre Append.

Peut-être que vous accumulez la sortie de la console dans un fichier et souhaitez ajouter du texte à un fichier plutôt que de l’écraser. Le paramètre Append est votre meilleur allié.

En utilisant le paramètre Out-File -Append, vous pouvez voir ci-dessous que si vous ne l’utilisez pas, C:\File.txt est écrasé. Mais, dès que vous ajoutez le paramètre Append, il ajoute la sortie à la fin.

PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content -Path C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt
PS> Get-Content C:\File.txt
foo
PS> 'foo' | Out-File -FilePath C:\File.txt -Append
PS> Get-Content C:\File.txt
foo foo

Modifier la sortie

Par défaut, ce cmdlet tentera de reproduire ce qui est affiché sur la console, mais il existe des moyens de le manipuler. Par exemple, le cmdlet a un paramètre NoNewLine qui supprime simplement tous les caractères de nouvelle ligne.

PS> Get-Service | Out-File -FilePath C:\Services.txt -NoNewline
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application La

Ou, vous pouvez également couper le texte sur chaque ligne à un certain nombre de caractères avec le paramètre Width.

PS> Get-Service | Out-File -FilePath C:\Services.txt -Width 30 
PS> Get-Content C:\Services.txt
Status   Name               DisplayName
------   -----              -----------
Stopped  AJRouter           Al

Conclusion

Out-File

Dans un scénario réel, ce cmdlet fonctionne mais il existe de meilleures façons de stocker la sortie dans un fichier.

Ce cmdlet ne fournit aucune option réelle pour manipuler la sortie. Il sauve simplement la sortie exactement telle qu’elle est affichée dans la console. Ce cmdlet est similaire à une transcription PowerShell qui écrit simplement tout directement dans un fichier texte.

Les cmdlets Add-Content ou Set-Content auront toujours plus de flexibilité, mais si vous avez besoin d’un moyen rapide d’obtenir la sortie PowerShell dans un fichier, Out-File est la solution à privilégier.

Connexe : Set-Content : La méthode PowerShell pour écrire dans un fichier

Source:
https://adamtheautomator.com/out-file/