Out-File

Odešle výstup do souboru.

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

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 seznam procesů místního počítače do souboru. 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 na místním počítači. Objekty Process se do rutiny odesílají dolů 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 brání 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 na místním počítači. Objekty Process se do rutiny odesílají dolů 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 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 na 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ává objekty $Procs procesu do souboru Process.txt. Parametr Kódování 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 zprostředkovatele FileSystem . Get-PSProvider Pomocí rutiny 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 do rutiny dolů Out-File . Out-File pomocí parametru FilePath určí úplnou cestu a název 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 používá $PSDefaultParameterValues k nastavení Width parametru pro všechna vyvolání operartorů a operartorů Out-File 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 hostitele PowerShellu.

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 $PSDefaultParameterValuesnástroji about_Preference_Variables.

Parametry

-Append

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

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Před spuštěním rutiny zobrazí výzvu k potvrzení.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters: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í pro znakovou sadu ASCII (7bitová).
  • bigendianunicode: Kóduje ve formátu UTF-16 pomocí velkého bajtového pořadí.
  • bigendianutf32: Kóduje ve formátu UTF-32 pomocí velkého 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í malého bajtového pořadí.
  • utf7: Kóduje ve formátu UTF-7.
  • utf8: Kóduje ve formátu UTF-8.
  • utf8BOM: Kóduje 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 kódových stránek (například -Encoding 1251) nebo názvy řetězců registrovaných kódových stránek (například -Encoding "windows-1251"). Další informace najdete v dokumentaci k .NET pro Kódování.CodePage.

Poznámka

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

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:1
Default value:UTF8NoBOM
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

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

Type:String
Aliases:Path
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters: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í.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Určuje objekty, které se mají zapisovat do souboru. Zadejte proměnnou obsahující objekty nebo zadejte příkaz nebo výraz, který získá objekty.

Type:PSObject
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters: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, že nemají interpretovat žádné znaky jako řídicí sekvence. Další informace najdete v tématu about_Quoting_Rules.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters: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í.

Type:SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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 nejsou vloženy mezery ani nové čáry. Za poslední výstupní řetězec se nepřidá žádný nový řádek.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Width

Určuje počet znaků v každém řádku výstupu. Všechny další znaky jsou zkráceny, nezabalené. Pokud se tento parametr nepoužívá, šířka je určena vlastnostmi hostitele. Výchozí hodnota konzoly PowerShellu je 80 znaků. Pokud chcete řídit šířku pro všechna vyvolání a operátory Out-File přesměrování (> a >>), nastavte $PSDefaultParameterValues['out-file:width'] = 2000 před použitím Out-File.

Type:Int32
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

Vstupy

PSObject

Libovolný objekt můžete převést na Out-File.

Výstupy

None

Out-File negeneruje žádný výstup.

Poznámky

Vstupní objekty se automaticky naformátují tak, jak by byly v terminálu, ale můžete použít rutinu Format-* k explicitnímu řízení 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 ukládat do proměnné a pomocí parametru InputObject předat data rutině Out-File .

Out-File ukládá 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, který se předává Out-File , lze změnit na základě nastavení $PSStyle.OutputRendering vlastnosti. Další informace najdete v tématu about_ANSI_Terminals.