Sdílet prostřednictvím


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-Filepouží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-Filepouží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-Filepouží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 $PSDefaultParameterValuesté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

PSObject

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.