Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PowerShell poskytuje několik rutin, které umožňují přímo řídit výstup dat. Tyto rutiny sdílejí dvě důležité charakteristiky.
Za prvé, obvykle transformují data na nějakou formu textu. Dělají to, protože vypisují data do systémových komponent, ke kterým musí být zadán text. To znamená, že musí představovat objekty jako text. Text je proto naformátovaný tak, jak ho vidíte v okně konzoly PowerShellu.
Za druhé tyto rutiny používají příkaz PowerShell Out , protože odesílají informace z PowerShellu do jiného prostředí.
Výstup konzoly
PowerShell ve výchozím nastavení odesílá data do okna hostitele, což je přesně to, co rutina Out-Host dělá. Primárním použitím rutiny Out-Host je stránkování. Například následující příkaz používá Out-Host pro stránkování výstupu z cmdletu Get-Command:
Get-Command | Out-Host -Paging
Zobrazení hostitelského okna se nachází mimo PowerShell. To je důležité, protože když se data odesílají z PowerShellu, skutečně se odeberou. Můžete to vidět, pokud se pokusíte vytvořit kanál, který bude stránkovat data do okna hostitele, a pak se ho pokusíte naformátovat jako seznam, jak je znázorněno tady:
Get-Process | Out-Host -Paging | Format-List
Můžete očekávat, že příkaz zobrazí stránky informací o procesu ve formátu seznamu. Místo toho zobrazí výchozí tabulkový seznam:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
101 5 1076 3316 32 0.05 2888 alg
...
618 18 39348 51108 143 211.20 740 explorer
257 8 9752 16828 79 3.02 2560 explorer
...
<SPACE> next page; <CR> next line; Q quit
...
Rutina Out-Host odesílá data přímo do konzoly, takže Format-List příkaz nikdy neobdrží nic k formátování.
Správným způsobem, jak tento příkaz strukturovat, je umístit cmdlet Out-Host do konce roury, jak uvidíte níže. To způsobí, že data procesu jsou naformátována do seznamu před stránkováním a zobrazením.
Get-Process | Format-List | Out-Host -Paging
Id : 2888
Handles : 101
CPU : 0.046875
Name : alg
...
Id : 740
Handles : 612
CPU : 211.703125
Name : explorer
Id : 2560
Handles : 257
CPU : 3.015625
Name : explorer
...
<SPACE> next page; <CR> next line; Q quit
...
To platí pro všechny cmdlety Out. Cmdlet Out by měl být vždy umístěn na konci pipeline.
Poznámka:
Všechny rutiny Out vykreslují výstup jako text s použitím formátování v okně konzoly, včetně limitů délky řádků.
Zahození výstupu
Cmdlet Out-Null je navržený tak, aby okamžitě zahodil jakýkoli vstup, který obdrží. To je užitečné pro zahození nepotřebných dat, která získáte jako vedlejší efekt spuštění příkazu. Když zadáte následující příkaz, z příkazu se nic nevrátí:
Get-Command | Out-Null
Cmdlet Out-Null nezahodí chybový výstup. Pokud například zadáte následující příkaz, zobrazí se zpráva s informací, že PowerShell nerozpozná Is-NotACommand:
PS> Get-Command Is-NotACommand | Out-Null
Get-Command : 'Is-NotACommand' isn't recognized as a cmdlet, function, operable program, or script file.
At line:1 char:12
+ Get-Command <<<< Is-NotACommand | Out-Null
Tisk dat
Out-Printerje k dispozici pouze na platformách Windows.
Data můžete vytisknout pomocí rutiny Out-Printer . Pokud nezadáte název tiskárny, použije rutina Out-Printer výchozí tiskárnu. Libovolnou tiskárnu založenou na systému Windows můžete použít zadáním jejího zobrazovaného názvu. Není potřeba žádné mapování portů tiskárny ani skutečné fyzické tiskárny.
Pokud máte například nainstalované nástroje pro vytváření imagí dokumentů Microsoft Office, můžete data odeslat do souboru obrázku zadáním:
Get-Command -Name Get-* | Out-Printer -Name 'Microsoft Office Document Image Writer'
Ukládání dat
Výstup můžete odeslat do souboru místo okna konzoly pomocí rutiny Out-File . Následující příkazový řádek odešle do souboru C:\temp\processlist.txtseznam procesů:
Get-Process | Out-File -FilePath C:\temp\processlist.txt
Výsledky použití rutiny Out-File nemusí být to, co očekáváte, pokud jste zvyklí na tradiční přesměrování výstupu. Abyste pochopili jeho chování, musíte mít na paměti kontext, ve kterém rutina Out-File funguje.
V okně PowerShell 5.1 rutina Out-File vytvoří soubor Unicode. Některé nástroje, které očekávají soubory ASCII, nefungují správně s výchozím výstupním formátem. Výchozí výstupní formát můžete změnit na ASCII pomocí parametru Kódování :
Get-Process | Out-File -FilePath C:\temp\processlist.txt -Encoding ascii
Out-File formátuje obsah souboru tak, aby vypadal jako výstup konzoly. To způsobí, že se výstup ve většině okolností zkrátí stejně jako v okně konzoly. Pokud například spustíte následující příkaz:
Get-Command | Out-File -FilePath C:\temp\output.txt
Výstup bude vypadat takto:
CommandType Name Definition
----------- ---- ----------
Cmdlet Add-Content Add-Content [-Path] <String[...
Cmdlet Add-History Add-History [[-InputObject] ...
...
Pokud chcete získat výstup, který nevynucuje zalamování řádků tak, aby odpovídaly šířce obrazovky, můžete zadat šířku čáry pomocí parametru Width . Protože Width je 32bitový celočíselnou parametr, maximální hodnota, kterou může mít, je 2147483647. Zadáním následujícího příkazu nastavte šířku čáry na tuto maximální hodnotu:
Get-Command | Out-File -FilePath C:\temp\output.txt -Width 2147483647
Rutina Out-File je nejužitečnější, když chcete uložit výstup tak, jak by se zobrazila v konzole.