Leiten Sie PowerShell-Ausgaben mit Out-File in eine Datei um: Ein vollständiger Leitfaden

Wenn Sie auf der Suche nach einem PowerShell-Cmdlet sind, das die Ausgabe in einer Textdatei speichern kann, haben Sie Glück. Sie werden gleich lernen, wie Sie das PowerShell Out-File-Cmdlet zusammen mit seinem beliebten Out-File -Append-Parameter verwenden können!

Wie funktioniert Out-File?

Dieses PowerShell-Cmdlet ist von einfacher Natur; sein einziger Zweck besteht darin, empfangene Ausgaben zu speichern und sie in einer Textdatei zu speichern.

Es wurde entworfen, um den Standard-Ausgaberichtungs Operator (>) zu ersetzen. Schon seit den DOS-Tagen konnten wir Ausgaben in eine Datei umleiten. Dieses Cmdlet ist der PowerShell-Weg, um es zu tun.

Das Out-File-Cmdlet wird normalerweise am Ende der PowerShell-Pipeline verwendet. Sein einziger Zweck ist es, die Rohausgabe direkt in eine Textdatei zu senden, ohne Rücksicht darauf. Es gibt minimale Möglichkeiten, wie diese Ausgabe geschrieben wird.

Ausgabe in eine Datei senden

Angenommen, Sie haben ein Skript, das eine Liste aller Windows-Dienste auf Ihrem Computer zurückgibt. Wenn Sie Get-Service ausführen, erhalten Sie alle Objekte, die Sie auf der Konsole erwarten würden.

Vielleicht möchten Sie jedoch diese Ausgabe in einer Textdatei speichern. Das Out-File-Cmdlet ist eine großartige Möglichkeit, dies zu tun. Sie können es verwenden, indem Sie praktisch alles über die Pipeline weiterleiten.

Sie können unten sehen, dass die Ausgabe von Get-Service an das Cmdlet gesendet wurde, das eine Textdatei namens Services.txt erstellt hat, die genau den Inhalt enthält, den Sie auf der Konsole sehen.

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>

Anhängen an eine Datei

Standardmäßig überschreibt es alles in der Textdatei, die über den FilePath-Parameter bereitgestellt wird. Sie können jedoch dieses Verhalten überschreiben, indem Sie den Append-Parameter verwenden.

Vielleicht sammeln Sie die Konsolenausgabe in einer Datei und möchten Text an eine Datei anhängen, anstatt sie zu überschreiben. Der Append-Parameter ist Ihr bester Freund.

Indem Sie den Out-File -Append-Parameter verwenden, können Sie unten sehen, dass, wenn Sie ihn nicht verwenden, die C:\File.txt überschrieben wird. Aber sobald Sie den Append-Parameter anhängen, wird die Ausgabe an das Ende angehängt.

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

Ändern der Ausgabe

Standardmäßig versucht dieses Cmdlet, das an der Konsole Gezeigte zu replizieren, aber es gibt einige Möglichkeiten, es zu manipulieren. Zum Beispiel hat das Cmdlet einen NoNewLine-Parameter, der einfach alle Zeilenumbrüche entfernt.

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

Oder Sie können den Text in jeder Zeile auch an einer bestimmten Zeichenanzahl abschneiden, und zwar mit dem Width-Parameter.

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

Fazit

Out-File

In einem realen Szenario funktioniert dieses Cmdlet, aber es gibt bessere Möglichkeiten, die Ausgabe in einer Datei zu speichern.

Dieses Cmdlet bietet keine echten Optionen zur Manipulation der Ausgabe. Es speichert die Ausgabe einfach genau so, wie sie auf der Konsole angezeigt wird. Dieses Cmdlet ähnelt einem PowerShell-Transkript, das einfach alles direkt in eine Textdatei schreibt.

Die Add-Content– oder Set-Content-Cmdlets bieten immer mehr Flexibilität, aber wenn Sie eine schnelle Möglichkeit benötigen, um die PowerShell-Ausgabe in eine Datei zu bekommen, ist Out-File der richtige Weg.

Verwandt: Set-Content: Der PowerShell-Weg zum Schreiben in eine Datei

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