Out-File
Sendet die Ausgabe an eine Datei.
Syntax
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>]
Beschreibung
Das Out-File
Cmdlet sendet die Ausgabe an eine Datei. Implizit wird das Formatierungssystem von PowerShell verwendet, um in die Datei zu schreiben. Die Datei erhält dieselbe Anzeigedarstellung wie das Terminal. Dies bedeutet, dass die Ausgabe möglicherweise nicht ideal für die programmgesteuerte Verarbeitung ist, es sei denn, alle Eingabeobjekte sind Zeichenfolgen.
Wenn Sie Parameter für die Ausgabe angeben müssen, verwenden Sie Out-File
anstelle des Umleitungsoperators (>
). Weitere Informationen zur Umleitung finden Sie unter about_Redirection.
Beispiele
Beispiel 1: Senden einer 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, Out-File
wird die Datei im angegebenen Pfad erstellt.
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 Get-Process
Cmdlet ruft die Liste der Prozesse ab, die auf dem lokalen Computer ausgeführt werden. Die Process-Objekte werden in der Pipeline an das Out-File
Cmdlet gesendet. Out-File
verwendet den FilePath-Parameter und erstellt eine Datei im aktuellen Verzeichnis mit dem NamenProcess.txt. Der Get-Content
Befehl ruft Inhalte aus der Datei ab und zeigt sie in der PowerShell-Konsole an.
Beispiel 2: Verhindern des Überschreibens einer vorhandenen Datei
In diesem Beispiel wird verhindert, dass eine vorhandene Datei überschrieben wird. Standardmäßig Out-File
werden vorhandene Dateien überschrieben.
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 Get-Process
Cmdlet ruft die Liste der Prozesse ab, die auf dem lokalen Computer ausgeführt werden. Die Process-Objekte werden in der Pipeline an das Out-File
Cmdlet gesendet. Out-File
verwendet den FilePath-Parameter und versucht, in eine Datei im aktuellen Verzeichnis namensProcess.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 einer 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 Get-Process
Cmdlet ruft die Liste der Prozesse ab, die auf dem lokalen Computer ausgeführt werden. Die Process-Objekte werden in der Variablen gespeichert. $Procs
Out-File
verwendet den FilePath-Parameter und erstellt eine Datei im aktuellen Verzeichnis mit dem NamenProcess.txt. Der InputObject-Parameter übergibt die Prozessobjekte an $Procs
die Datei Process.txt. Der Encoding-Parameter konvertiert die Ausgabe in das ASCII-Format . Der Width-Parameter begrenzt jede Zeile in der Datei auf 50 Zeichen, sodass einige Daten abgeschnitten werden können.
Beispiel 4: Verwenden eines Anbieters und Senden einer Ausgabe an eine Datei
In diesem Beispiel wird gezeigt, wie Sie das Out-File
Cmdlet verwenden, wenn Sie sich nicht in einem FileSystem-Anbieterlaufwerk befinden. Verwenden Sie das Get-PSProvider
Cmdlet, um die Anbieter auf Ihrem lokalen Computer anzuzeigen. Weitere Informationen finden Sie unter 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
Der Set-Location
Befehl verwendet den Path-Parameter , um den aktuellen Speicherort auf den Registrierungsanbieter Alias:
festzulegen. Das Get-Location
Cmdlet zeigt den vollständigen Pfad für Alias:
an.
Get-ChildItem
sendet Objekte in der Pipeline an das Out-File
Cmdlet. Out-File
verwendet den FilePath-Parameter , um den vollständigen Pfad und Dateinamen für die Ausgabe anzugeben, C:\TestDir\AliasNames.txt. Das Get-Content
Cmdlet 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 den Umleitungsoperrtoren (>
und >>
) auf 2000 festzulegen. Dies ist eine einfache Möglichkeit, um sicherzustellen, dass PowerShell überall in einem Bereich, in dem Sie Tabellenformatdaten in eine Datei ausgeben, eine Zeilenbreite von 2000 anstelle einer Linienbreite 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Gibt den Typ der Codierung für die Zieldatei an. Standardwert: utf8NoBOM
.
Die zulässigen Werte für diesen Parameter sind wie folgt:
ascii
: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit).bigendianunicode
: Codiert im UTF-16-Format mit der Big-Endian-Bytereihenfolge.bigendianutf32
: Codiert im UTF-32-Format mit der Big-Endian-Bytereihenfolge.oem
: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.unicode
: Codiert im UTF-16-Format mit der Bytereihenfolge little-endian.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 lässt der Codierungsparameter auch numerische IDs registrierter Codeseiten (z. B -Encoding 1251
. ) oder Zeichenfolgennamen registrierter Codeseiten (z. B -Encoding "windows-1251"
. ) zu. Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage.
Hinweis
UTF-7* wird nicht mehr empfohlen. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie für den Encoding-Parameter angebenutf7
.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | 1 |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Gibt den Pfad zur Ausgabedatei an.
Type: | String |
Aliases: | Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Überschreibt das schreibgeschützte Attribut und überschreibt eine vorhandene schreibgeschützte Datei. Der Force-Parameter überschreibt keine Sicherheitseinschränkungen.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Gibt die in die Datei zu schreibenden Objekte an. 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.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Gibt den Pfad zur Ausgabedatei an. Der LiteralPath-Parameter wird genau so verwendet, wie er eingegeben wird. Platzhalterzeichen werden nicht akzeptiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einzelne Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren. Weitere Informationen finden Sie unter about_Quoting_Rules.
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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, Out-File
überschreibt die Datei standardmäßig ohne Warnung.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoNewline
Gibt an, dass der in die Datei geschriebene Inhalt nicht mit einem Zeilenumbruchzeichen endet. Die Zeichenfolgendarstellungen der Eingabeobjekte werden verkettet, um die Ausgabe zu bilden. Zwischen den Ausgabezeichenfolgen werden keine Leerzeichen oder Zeilen eingefügt. Nach der letzten Ausgabezeichenfolge wird kein Zeilenumbruch hinzugefügt.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Width
Gibt die Anzahl der Zeichen in jeder Zeile der Ausgabe an. Alle zusätzlichen Zeichen werden abgeschnitten und nicht umgebrochen. Wenn dieser Parameter nicht verwendet wird, wird die Breite durch die Merkmale des Hosts bestimmt. Die Standardeinstellung für die PowerShell-Konsole besteht aus 80 Zeichen. Wenn Sie die Breite für alle Aufrufe von Out-File
sowie für die Umleitungsoperatoren (>
und >>
) steuern möchten, legen Sie vor der Verwendung Out-File
fest$PSDefaultParameterValues['out-file:width'] = 2000
.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können jedes Objekt an übergeben Out-File
.
Ausgaben
None
Out-File
generiert keine Ausgabe.
Hinweise
Eingabeobjekte werden automatisch wie im Terminal formatiert, aber Sie können ein Format-*
Cmdlet verwenden, um die Formatierung der Ausgabe der Datei explizit zu steuern. Zum Beispiel, Get-Date | Format-List | Out-File out.txt
Verwenden Sie die Pipeline, um die Ausgabe eines PowerShell-Befehls an das Out-File
Cmdlet zu senden. Alternativ können Sie Daten in einer Variablen speichern und den InputObject-Parameter verwenden, um Daten an das Out-File
Cmdlet zu übergeben.
Out-File
speichert Daten in einer Datei, erzeugt jedoch keine Ausgabeobjekte für die Pipeline.