Out-File
Sendet die Ausgabe an eine Datei.
Syntax
ByPath (Standardwert)
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>]
Beschreibung
Das Cmdlet Out-File sendet die Ausgabe an eine Datei. Es verwendet implizit das Formatierungssystem von PowerShell, um in die Datei zu schreiben. Die Datei empfängt dieselbe Anzeigedarstellung wie das Terminal. Dies bedeutet, dass die Ausgabe möglicherweise nicht für die programmgesteuerte Verarbeitung geeignet ist, es sei denn, alle Eingabeobjekte sind Zeichenfolgen.
Das Umleiten der Ausgabe eines PowerShell-Befehls (Cmdlet, Funktion, Skript) mithilfe des Umleitungsoperators (>) entspricht funktionell der Weiterleitung an Out-File ohne zusätzlicher Parameter.
PowerShell 7.4 hat das Verhalten des Umleitungsoperators geändert, wenn der stdout Stream eines systemeigenen Befehls umgeleitet wird. Weitere Informationen zur Umleitung finden Sie unter about_Redirection.
Beispiele
Beispiel 1: Senden der Ausgabe und Erstellen einer Datei
In diesem Beispiel wird gezeigt, wie eine Liste der Prozesse des lokalen Computers an eine Datei gesendet wird. Wenn die Datei nicht vorhanden ist, erstellt Out-File die Datei im angegebenen Pfad.
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
Das Cmdlet Get-Process ruft die Liste der Prozesse ab, die auf dem lokalen Computer ausgeführt werden. Die Process-Objekte werden an das Cmdlet Out-File weitergeleitet.
Out-File verwendet den FilePath Parameter und erstellt eine Datei im aktuellen Verzeichnis namens Process.txt. Der Befehl Get-Content ruft Inhalt aus der Datei ab und zeigt ihn in der PowerShell-Konsole an.
Beispiel 2: Verhindern, dass eine vorhandene Datei überschrieben wird
In diesem Beispiel wird verhindert, dass eine vorhandene Datei überschrieben wird. Standardmäßig überschreibt Out-File vorhandene Dateien.
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
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Das Cmdlet Get-Process ruft die Liste der Prozesse ab, die auf dem lokalen Computer ausgeführt werden. Die Process-Objekte werden an das Cmdlet Out-File weitergeleitet.
Out-File verwendet den parameter FilePath und versucht, in eine Datei im aktuellen Verzeichnis namens Process.txtzu schreiben. Der NoClobber Parameter verhindert, dass die Datei überschrieben wird, und zeigt eine Meldung an, dass die Datei bereits vorhanden ist.
Beispiel 3: Senden der Ausgabe an eine Datei im ASCII-Format
In diesem Beispiel wird gezeigt, wie die Ausgabe mit einem bestimmten Codierungstyp codiert wird.
$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ascii -Width 50
Das Cmdlet Get-Process ruft die Liste der Prozesse ab, die auf dem lokalen Computer ausgeführt werden. Die Process-Objekte werden in der Variablen $Procsgespeichert.
Out-File verwendet den FilePath Parameter und erstellt eine Datei im aktuellen Verzeichnis namens Process.txt. Der parameter InputObject übergibt die Prozessobjekte in $Procs an die Datei Process.txt. Der parameter Encoding konvertiert die Ausgabe in ASCII--Format. Die Width Parameter beschränkt jede Zeile in der Datei auf 50 Zeichen, sodass einige Daten möglicherweise abgeschnitten werden.
Beispiel 4: Verwenden eines Anbieters und Senden der Ausgabe an eine Datei
In diesem Beispiel wird gezeigt, wie Sie das cmdlet Out-File verwenden, wenn Sie sich nicht in einem FileSystem- Anbieterlaufwerk befinden. Verwenden Sie das Cmdlet Get-PSProvider, um die Anbieter auf Ihrem lokalen Computer anzuzeigen. Weitere Informationen finden Sie unter über_Anbieter.
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
Der Befehl Set-Location verwendet den Parameter Path, um den aktuellen Speicherort auf den Registrierungsanbieter Alias:festzulegen. Das Cmdlet Get-Location zeigt den vollständigen Pfad für Alias:an.
Get-ChildItem sendet Objekte an das Cmdlet Out-File.
Out-File verwendet den parameter FilePath, um den vollständigen Pfad und Dateinamen für die Ausgabe anzugeben, C:\TestDir\AliasNames.txt. Das cmdlet Get-Content verwendet den parameter Path und zeigt den Inhalt der Datei in der PowerShell-Konsole an.
Beispiel 5: Festlegen der Dateiausgabebreite für den gesamten Bereich
In diesem Beispiel wird $PSDefaultParameterValues verwendet, um den Width Parameter für alle Aufrufe von Out-File und die Umleitungsoperatoren (> und >>) auf 2000 festzulegen. Dadurch wird sichergestellt, dass überall innerhalb des aktuellen Bereichs, in dem Sie tabellenformatierte Daten in die Datei ausgeben, PowerShell eine Linienbreite von 2000 anstelle einer Zeilenbreite verwendet, die von der Konsolenbreite des PowerShell-Hosts bestimmt wird.
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
Weitere Informationen zu $PSDefaultParameterValues finden Sie unter about_Preference_Variables.
Parameter
-Append
Fügt die Ausgabe am Ende einer vorhandenen Datei hinzu.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Confirm
Fordert Sie zur Bestätigung auf, bevor Sie das Cmdlet ausführen.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | vgl |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Encoding
Gibt den Typ der Codierung für die Zieldatei an. Der Standardwert ist utf8NoBOM.
Die zulässigen Werte für diesen Parameter sind wie folgt:
-
ascii: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit). -
ansi: Verwendet die Kodierung für die ANSI-Codepage der aktuellen Kultur. Diese Option wurde in PowerShell 7.4 hinzugefügt. -
bigendianunicode: Codiert im UTF-16-Format mithilfe der Big-Endian-Byte-Reihenfolge. -
bigendianutf32: Codiert im UTF-32-Format unter Verwendung der Big-Endian-Byte-Reihenfolge. -
oem: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme. -
unicode: Codiert im UTF-16-Format unter Verwendung der "little-endian"-Bytereihenfolge. -
utf7: Codiert im UTF-7-Format. -
utf8: Codiert im UTF-8-Format. -
utf8BOM: Codiert im UTF-8-Format mit Byte Order Mark (BOM) -
utf8NoBOM: Codiert im UTF-8-Format ohne Byte Order Mark (BOM) -
utf32: Codiert im UTF-32-Format.
Ab PowerShell 6.2 ermöglicht der parameter Encoding auch numerische IDs registrierter Codeseiten (z. B. -Encoding 1251) oder Zeichenfolgennamen registrierter Codeseiten (z. B. -Encoding "windows-1251"). Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage-.
Ab PowerShell 7.4 können Sie den Ansi Wert für den parameter Encoding verwenden, um die numerische ID für die ANSI-Codeseite der aktuellen Kultur zu übergeben, ohne sie manuell angeben zu müssen.
Hinweis
Die Verwendung von UTF-7* wird nicht mehr empfohlen. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie utf7 für den parameter Encoding angeben.
Parametereigenschaften
| Typ: | Encoding |
| Standardwert: | UTF8NoBOM |
| Zulässige Werte: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 1 |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-FilePath
Gibt den Pfad zur Ausgabedatei an.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Pfad |
Parametersätze
ByPath
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Force
Überschreibt das schreibgeschützte Attribut und überschreibt eine vorhandene schreibgeschützte Datei. Der Parameter Force überschreibt keine Sicherheitseinschränkungen.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputObject
Gibt die Objekte an, die in die Datei geschrieben werden sollen. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, durch den die Objekte abgerufen werden.
Parametereigenschaften
| Typ: | PSObject |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-LiteralPath
Gibt den Pfad zur Ausgabedatei an. Der LiteralPath--Parameter wird genau so verwendet, wie er eingegeben wird. Wildcardzeichen werden nicht akzeptiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen signalisieren PowerShell, dass keine Zeichen als Escapesequenzen interpretiert werden sollen. Weitere Informationen finden Sie unter über_Zitierregeln.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | PSPath, EP |
Parametersätze
ByLiteralPath
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-NoClobber
NoClobber verhindert, dass eine vorhandene Datei überschrieben wird, und zeigt eine Meldung an, dass die Datei bereits vorhanden ist. Wenn eine Datei im angegebenen Pfad vorhanden ist, überschreibt Out-File die Datei standardmäßig ohne Warnung.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | NoOverwrite |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-NoNewline
Gibt an, dass der in die Datei geschriebene Inhalt nicht mit einem Neuenlinezeichen endet. Die Zeichenfolgendarstellungen der Eingabeobjekte werden verkettet, um die Ausgabe zu bilden. Zwischen den Ausgabezeichenfolgen werden keine Leerzeichen oder Newlines eingefügt. Nach der letzten Zeichenfolge der Ausgabe wird kein Zeilenumbruch eingefügt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Wi |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Width
Gibt die maximale Anzahl von Zeichen in jeder Ausgabezeile an. Alle zusätzlichen Zeichen werden abgeschnitten, nicht umschlossen. Wenn dieser Parameter nicht verwendet wird, wird die Breite durch die Merkmale des Hosts bestimmt. Die Standardeinstellung für die PowerShell-Konsole beträgt 80 Zeichen. Wenn Sie die Breite für alle Aufrufe von Out-File sowie die Umleitungsoperatoren (> und >>) steuern möchten, legen Sie $PSDefaultParameterValues['Out-File:Width'] = 2000 fest, bevor Sie Out-Fileverwenden.
Parametereigenschaften
| Typ: | Int32 |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
PSObject
Sie können jedes Objekt an dieses Cmdlet weiterleiten.
Ausgaben
None
Dieses Cmdlet gibt keine Ausgabe zurück.
Hinweise
Eingabeobjekte werden automatisch so formatiert, wie sie sich im Terminal befinden. Sie können jedoch ein Format-*-Cmdlet verwenden, um die Formatierung der Ausgabe in der Datei explizit zu steuern. Beispiel: Get-Date | Format-List | Out-File out.txt
Verwenden Sie die Pipeline, um die Ausgabe eines PowerShell-Befehls an das cmdlet Out-File zu senden. Alternativ können Sie Daten in einer Variablen speichern und den parameter InputObject verwenden, um Daten an das Cmdlet Out-File zu übergeben.
Out-File Speichert Daten in einer Datei, erzeugt aber keine Ausgabeobjekte für die Pipeline.
PowerShell 7.2 hat die Möglichkeit hinzugefügt, zu steuern, wie ANSI-Escapesequenzen gerendert werden. ANSI-dekorierte Ausgabe, die an Out-File übergeben wird, kann basierend auf der Einstellung der $PSStyle.OutputRendering-Eigenschaft geändert werden. Weitere Informationen finden Sie unter about_ANSI_Terminals.