Sdílet prostřednictvím


Out-File

Odešle výstup do souboru.

Syntax

ByPath (Výchozí)

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>]

Description

Rutina Out-File odesílá 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. Pokud potřebujete zadat parametry pro výstup, použijte Out-File místo operátoru přesměrování (>). 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 zapsat do souboru v aktuálním adresáři s názvem Process.txt. Parametr NoClobber zabrání 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 procesu v $Procs souboru Process.txt. Parametr Encoding převede výstup na formát ASCII. Parametr Width omezuje každý řádek v souboru na 50 znaků, aby se některá data mohla zkrátit.

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 poskytovatele FileSystem. K zobrazení poskytovatelů na místním počítači použijte rutinu Get-PSProvider. Pro více informací viz 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 registru Alias:. Rutina Get-Location zobrazí úplnou cestu pro Alias:. Get-ChildItem odešle objekty do rutiny Out-File. Out-File používá parametr FilePath k určení úplné cesty a názvu souboru výstupu C:\TestDir\AliasNames.txt. Rutina Get-Content používá parametr Path a zobrazuje obsah souboru v konzole PowerShellu.

Příklad 5: Nastavení výstupní šířky souboru pro celý obor

Tento příklad slouží $PSDefaultParameterValues k nastavení parametru Width pro všechna vyvolání Out-File a operartory přesměrování (> a >>) na 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 o $PSDefaultParameterValuesnaleznete v tématu about_Preference_Variables.

Parametry

-Append

Přidá výstup na konec existujícího souboru.

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Confirm

Před spuštěním cmdletu vás vyzve k potvrzení.

Vlastnosti parametru

Typ:SwitchParameter
Default value:False
Podporuje zástupné znaky:False
DontShow:False
Aliasy:viz

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů: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á).
  • bigendianunicode: Kóduje ve formátu UTF-16 s použitím pořadí bajtů big-endian.
  • bigendianutf32: Kóduje ve formátu UTF-32 s použitím big-endian bajtového pořadí.
  • oem: Používá výchozí kódování pro MS-DOS a konzolové programy.
  • unicode: Kóduje ve formátu UTF-16 pomocí pořadí malých bajtů.
  • 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 Encoding také číselné ID registrovaných znakových stránek (například -Encoding 1251) nebo názvy řetězců registrovaných znakových stránek (například -Encoding "windows-1251"). Další informace naleznete v dokumentaci .NET pro Encoding.CodePage.

Poznámka:

UTF-7* se už nedoporučuje používat. Od PowerShellu 7.1 se zapíše upozornění, pokud pro parametr utf7 zadáte .

Vlastnosti parametru

Typ:Encoding
Default value:UTF8NoBOM
Přípustné hodnoty:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:1
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-FilePath

Určuje cestu k výstupnímu souboru.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False
Aliasy:Cesta

Sady parametrů

ByPath
Position:0
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Force

Přepíše atribut jen pro čtení a přepíše existující soubor jen pro čtení. Parametr Force nemá schopnost přepsat omezení zabezpečení.

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů: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á.

Vlastnosti parametru

Typ:PSObject
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-LiteralPath

Určuje cestu k výstupnímu souboru. Parametr LiteralPath se používá přesně tak, jak je zadaný. Zástupné znaky nejsou přijaty. Pokud cesta obsahuje únikové znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, aby žádné znaky neinterpretoval jako únikové sekvence. Další informace najdete v about_Quoting_Rules.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False
Aliasy:PSPath, PO

Sady parametrů

ByLiteralPath
Position:Named
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:True
Hodnota ze zbývajících argumentů:False

-NoClobber

NoClobber zabrání 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í.

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False
Aliasy:NoOverwrite

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů: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.

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-WhatIf

Ukazuje, co se stane, když se příkaz spustí. Cmdlet se nespustil.

Vlastnosti parametru

Typ:SwitchParameter
Default value:False
Podporuje zástupné znaky:False
DontShow:False
Aliasy:Wi

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů: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ů. Pokud chcete řídit šířku všech vyvolání Out-File a operátory přesměrování (> a >>), nastavte $PSDefaultParameterValues['out-file:width'] = 2000 před použitím Out-File.

Vlastnosti parametru

Typ:Int32
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

CommonParameters

Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.

Vstupy

PSObject

K tomuto cmdletu můžete přesměrovat libovolný objekt.

Výstupy

None

Tento cmdlet nevrátí žádný výstup.

Poznámky

Vstupní objekty se automaticky naformátují tak, jak by byly v terminálu, ale k explicitnímu řízení formátování výstupu do souboru můžete použít rutinu Format-*. Například Get-Date | Format-List | Out-File out.txt

K odeslání výstupu příkazu PowerShellu do rutiny 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 s dekorací ANSI předaný Out-File lze změnit na základě nastavení vlastnosti $PSStyle.OutputRendering. Další informace najdete v tématu about_ANSI_Terminals.