Out-File
Odešle výstup do souboru.
Syntaxe
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>]
Description
Rutina Out-File
odešle výstup do souboru. Implicitně používá systém formátování PowerShellu k zápisu do souboru. Soubor obdrží stejnou reprezentaci zobrazení jako terminál. To znamená, že výstup nemusí být ideální pro programové zpracování, pokud všechny vstupní objekty nejsou řetězce.
Přesměrování výstupu příkazu PowerShellu (rutina, funkce, skript) pomocí operátoru přesměrování (>
) je funkčně ekvivalentní pipingu Out-File
bez dalších parametrů.
PowerShell 7.4 změnil chování operátoru přesměrování při použití k přesměrování streamu stdout nativního příkazu. Další informace o přesměrování najdete v tématu about_Redirection.
Příklady
Příklad 1: Odeslání výstupu a vytvoření souboru
Tento příklad ukazuje, jak odeslat do souboru seznam procesů místního počítače. Pokud soubor neexistuje, Out-File
vytvoří soubor v zadané cestě.
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
Rutina Get-Process
získá seznam procesů spuštěných v místním počítači. Objekty Process se odesílají do rutiny Out-File
. Out-File
používá parametr FilePath a vytvoří soubor v aktuálním adresáři s názvem Process.txt. Příkaz Get-Content
získá obsah ze souboru a zobrazí ho v konzole PowerShellu.
Příklad 2: Zabránění přepsání existujícího souboru
Tento příklad zabraňuje přepsání existujícího souboru. Ve výchozím nastavení Out-File
přepíše existující soubory.
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
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Rutina Get-Process
získá seznam procesů spuštěných v místním počítači. Objekty Process se odesílají do rutiny Out-File
. Out-File
používá parametr FilePath a pokusí se zapisovat do souboru v aktuálním adresáři s názvem Process.txt. Parametr NoClobber zabraňuje přepsání souboru a zobrazí zprávu, že soubor již existuje.
Příklad 3: Odeslání výstupu do souboru ve formátu ASCII
Tento příklad ukazuje, jak kódovat výstup s konkrétním typem kódování.
$Procs = Get-Process
Out-File -FilePath .\Process.txt -InputObject $Procs -Encoding ASCII -Width 50
Rutina Get-Process
získá seznam procesů spuštěných v místním počítači. Objekty Process jsou uloženy v proměnné, $Procs
. Out-File
používá parametr FilePath a vytvoří soubor v aktuálním adresáři s názvem Process.txt. Parametr InputObject předá objekty $Procs
procesu do souboru Process.txt. Parametr Encoding převede výstup na formát ASCII . Parametr Width omezuje každý řádek v souboru na 50 znaků, takže některá data mohou být zkrácena.
Příklad 4: Použití zprostředkovatele a odeslání výstupu do souboru
Tento příklad ukazuje, jak použít rutinu Out-File
, když nejste na jednotce zprostředkovatele FileSystem . Pomocí rutiny Get-PSProvider
můžete zobrazit poskytovatele na místním počítači. Další informace najdete v tématu 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
Příkaz Set-Location
používá parametr Path k nastavení aktuálního umístění na zprostředkovatele Alias:
registru . Rutina Get-Location
zobrazí úplnou cestu pro Alias:
.
Get-ChildItem
odešle objekty z kanálu do rutiny Out-File
. Out-File
pomocí parametru FilePath určuje úplnou cestu a název souboru výstupu C :\TestDir\AliasNames.txt. Rutina Get-Content
používá parametr Path a zobrazí obsah souboru v konzole PowerShellu.
Příklad 5: Nastavení výstupní šířky souboru pro celý obor
Tento příklad používá $PSDefaultParameterValues
k nastavení parametru Width
pro všechna vyvolání Out-File
operátorů přesměrování (>
a >>
) na hodnotu 2000. Tím zajistíte, že PowerShell používá šířku čáry 2000 místo šířky čáry určené šířkou konzoly PowerShellu všude v aktuálním oboru, ve které jsou výstupní data formátovaná do souboru.
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
Další informace najdete v $PSDefaultParameterValues
tématu about_Preference_Variables.
Parametry
-Append
Přidá výstup na konec existujícího souboru.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Confirm
Před spuštěním rutiny zobrazí výzvu k potvrzení.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Encoding
Určuje typ kódování cílového souboru. Výchozí hodnota je utf8NoBOM
.
Přijatelné hodnoty pro tento parametr jsou následující:
ascii
: Používá kódování znakové sady ASCII (7bitová).ansi
: Používá kódování pro kódovou stránku ANSI aktuální jazykové verze. Tato možnost byla přidána v PowerShellu 7.4.bigendianunicode
: Kóduje ve formátu UTF-16 pomocí pořadí velkých bajtů.bigendianutf32
: Kóduje ve formátu UTF-32 pomocí pořadí velkých bajtů.oem
: Používá výchozí kódování pro MS-DOS a konzolové programy.unicode
: Kóduje ve formátu UTF-16 pomocí malého bajtového pořadí.utf7
: Kóduje ve formátu UTF-7.utf8
: Kóduje ve formátu UTF-8.utf8BOM
: Kódování ve formátu UTF-8 pomocí značky pořadí bajtů (BOM)utf8NoBOM
: Kódování ve formátu UTF-8 bez značky pořadí bajtů (BOM)utf32
: Kóduje ve formátu UTF-32.
Počínaje PowerShellem 6.2 umožňuje parametr Kódování také číselná ID registrovaných znakových stránek (jako -Encoding 1251
) nebo názvy řetězců registrovaných znakových stránek (například -Encoding "windows-1251"
). Další informace najdete v dokumentaci k .NET pro Encoding.CodePage.
Počínaje PowerShellem 7.4 můžete hodnotu parametru Encoding použít Ansi
k předání číselného ID pro znakovou stránku ANSI aktuální jazykové verze, aniž byste ji museli zadávat ručně.
Poznámka:
UTF-7* se už nedoporučuje používat. Od PowerShellu 7.1 se při zadání parametru Encoding zapíše utf7
upozornění.
Typ: | Encoding |
Přípustné hodnoty: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | 1 |
Default value: | UTF8NoBOM |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-FilePath
Určuje cestu k výstupnímu souboru.
Typ: | String |
Aliasy: | Path |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Force
Přepíše atribut jen pro čtení a přepíše existující soubor jen pro čtení. Parametr Force nepřepíše omezení zabezpečení.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-InputObject
Určuje objekty, které mají být zapsány do souboru. Zadejte proměnnou obsahující objekty nebo zadejte příkaz nebo výraz, který objekty získá.
Typ: | PSObject |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-LiteralPath
Určuje cestu k výstupnímu souboru. Parametr LiteralPath se používá přesně tak, jak je zadán. Zástupné znaky nejsou přijaty. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby nepřekládaly žádné znaky jako řídicí sekvence. Další informace najdete v tématu about_Quoting_Rules.
Typ: | String |
Aliasy: | PSPath, LP |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-NoClobber
NoClobber zabraňuje přepsání existujícího souboru a zobrazí zprávu, že soubor již existuje. Ve výchozím nastavení, pokud soubor existuje v zadané cestě, Out-File
přepíše soubor bez upozornění.
Typ: | SwitchParameter |
Aliasy: | NoOverwrite |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-NoNewline
Určuje, že obsah zapsaný do souboru nekončí znakem nového řádku. Řetězcové reprezentace vstupních objektů jsou zřetězeny tak, aby vytvořily výstup. Mezi výstupní řetězce se nevkládají žádné mezery ani nové čáry. Za poslední výstupní řetězec se nepřidá žádný nový řádek.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-WhatIf
Zobrazuje, co by se stalo při spuštění rutiny. Rutina se nespustí.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Width
Určuje maximální počet znaků v každém řádku výstupu. Všechny další znaky jsou zkráceny, nejsou zabaleny. Pokud se tento parametr nepoužívá, šířka je určena vlastnostmi hostitele. Výchozí hodnota pro konzolu PowerShellu je 80 znaků. Chcete-li řídit šířku pro všechna vyvolání, stejně jako operátory Out-File
přesměrování (>
a >>
), nastavit $PSDefaultParameterValues['out-file:width'] = 2000
před použitím Out-File
.
Typ: | Int32 |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Do této rutiny můžete převést libovolný objekt.
Výstupy
None
Tato rutina nevrátí žádný výstup.
Poznámky
Vstupní objekty se automaticky naformátují tak, jak by byly v terminálu, ale pomocí rutiny můžete Format-*
explicitně řídit formátování výstupu do souboru. Například Get-Date | Format-List | Out-File out.txt
Pokud chcete do rutiny odeslat výstup příkazu PowerShellu Out-File
, použijte kanál. Případně můžete data uložit do proměnné a pomocí parametru InputObject předat data do rutiny Out-File
.
Out-File
uloží data do souboru, ale nevygeneruje do kanálu žádné výstupní objekty.
PowerShell 7.2 přidal možnost řídit, jak se řídicí sekvence ANSI vykreslují. Výstup Out-File
s předaným ANSI lze změnit na základě nastavení $PSStyle.OutputRendering
vlastnosti. Další informace najdete v tématu about_ANSI_Terminals.