Změna zobrazení výstupu pomocí příkazů Formát
PowerShell obsahuje sadu rutin, které umožňují řídit, jak se vlastnosti zobrazují pro konkrétní objekty. Názvy všech rutin začínají slovesem Format
. Umožňují vybrat, které vlastnosti chcete zobrazit.
Get-Command -Verb Format -Module Microsoft.PowerShell.Utility
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Format-Custom 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-Hex 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-List 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-Table 6.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-Wide 6.1.0.0 Microsoft.PowerShell.Utility
Tento článek popisuje Format-Wide
, Format-List
a Format-Table
rutiny.
Každý typ objektu v PowerShellu má výchozí vlastnosti, které se použijí, když nevyberete vlastnosti, které se mají zobrazit. Každá rutina používá stejný parametr Property k určení požadovaných vlastností. Vzhledem k tomu Format-Wide
, že zobrazuje pouze jednu vlastnost, jeho parametr Property přebírá pouze jednu hodnotu, ale parametry Format-List
vlastnosti a Format-Table
přijímají seznam názvů vlastností.
V tomto příkladu výchozí výstup Get-Process
rutiny ukazuje, že máme spuštěné dvě instance Internet Exploreru.
Get-Process -Name iexplore
Výchozí formát pro objekty Process zobrazí vlastnosti zobrazené zde:
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
32 25.52 10.25 13.11 12808 1 iexplore
52 11.46 26.46 3.55 21748 1 iexplore
Použití formátu pro výstup s jednou položkou
Rutina Format-Wide
ve výchozím nastavení zobrazuje pouze výchozí vlastnost objektu. Informace přidružené k jednotlivým objektům se zobrazí v jednom sloupci:
Get-Command -Verb Format | Format-Wide
Format-Custom Format-Hex
Format-List Format-Table
Format-Wide
Můžete také zadat vlastnost, která není výchozí:
Get-Command -Verb Format | Format-Wide -Property Noun
Custom Hex
List Table
Wide
Řízení zobrazení v celém formátu se sloupcem
Pomocí rutiny Format-Wide
můžete zobrazit pouze jednu vlastnost najednou. To usnadňuje zobrazení velkých seznamů ve více sloupcích.
Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom Hex List
Table Wide
Použití formátu seznamu pro zobrazení seznamu
Rutina Format-List
zobrazí objekt ve formě výpisu s každou vlastností označenou a zobrazenou na samostatném řádku:
Get-Process -Name iexplore | Format-List
Id : 12808
Handles : 578
CPU : 13.140625
SI : 1
Name : iexplore
Id : 21748
Handles : 641
CPU : 3.59375
SI : 1
Name : iexplore
Můžete zadat libovolný počet vlastností:
Get-Process -Name iexplore | Format-List -Property ProcessName,FileVersion,StartTime,Id
ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime : 10/22/2019 11:23:58 AM
Id : 12808
ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime : 10/22/2019 11:23:57 AM
Id : 21748
Získání podrobných informací pomocí funkce Format-List se zástupnými cardy
Rutina Format-List
umožňuje použít zástupný znak jako hodnotu jeho parametru Property . Díky tomu můžete zobrazit podrobné informace. Objekty často obsahují více informací, než potřebujete, a proto PowerShell ve výchozím nastavení nezobrazuje všechny hodnoty vlastností. Pokud chcete zobrazit všechny vlastnosti objektu Format-List -Property *
, použijte příkaz. Následující příkaz vygeneruje pro jeden proces více než 60 řádků výstupu:
Get-Process -Name iexplore | Format-List -Property *
Format-List
I když je příkaz užitečný pro zobrazení podrobností, pokud chcete zobrazit přehled výstupu, který obsahuje mnoho položek, jednodušší tabulkové zobrazení je často užitečnější.
Použití tabulky Format-Table pro tabulkový výstup
Pokud k formátování výstupu Get-Process
příkazu použijete rutinu Format-Table
bez názvů vlastností, získáte úplně stejný výstup jako bez rutinyFormat
. PowerShell ve výchozím nastavení zobrazuje objekty Process v tabulkovém formátu.
Get-Service -Name win* | Format-Table
Status Name DisplayName
------ ---- -----------
Running WinDefend Windows Defender Antivirus Service
Running WinHttpAutoProx... WinHTTP Web Proxy Auto-Discovery Se...
Running Winmgmt Windows Management Instrumentation
Running WinRM Windows Remote Management (WS-Manag...
Poznámka:
Get-Service
je k dispozici pouze na platformách Windows.
Vylepšení výstupu tabulky formátu
I když je tabulkové zobrazení užitečné pro zobrazení velkého množství informací, může být obtížné interpretovat, pokud je zobrazení pro data příliš úzké. V předchozím příkladu je výstup zkrácen. Pokud při spuštění Format-Table
příkazu zadáte parametr AutoSize, PowerShell vypočítá šířky sloupců na základě zobrazených skutečných dat. Díky tomu budou sloupce čitelné.
Get-Service -Name win* | Format-Table -AutoSize
Status Name DisplayName
------ ---- -----------
Running WinDefend Windows Defender Antivirus Service
Running WinHttpAutoProxySvc WinHTTP Web Proxy Auto-Discovery Service
Running Winmgmt Windows Management Instrumentation
Running WinRM Windows Remote Management (WS-Management)
Rutina Format-Table
může stále zkrátit data, ale na konci obrazovky se jenom zkrátí.
Vlastnosti, jiné než poslední zobrazené, jsou dány tolik velikosti, kolik potřebují, aby se jejich nejdelší datový prvek zobrazoval správně.
Get-Service -Name win* |
Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -AutoSize
Name Status StartType DisplayName DependentServi
ces
---- ------ --------- ----------- --------------
WinDefend Running Automatic Windows Defender Antivirus Service {}
WinHttpAutoProxySvc Running Manual WinHTTP Web Proxy Auto-Discovery Service {NcaSvc, iphl…
Winmgmt Running Automatic Windows Management Instrumentation {vmms, TPHKLO…
WinRM Running Automatic Windows Remote Management (WS-Management) {}
Příkaz Format-Table
předpokládá, že vlastnosti jsou uvedeny v pořadí důležitosti. Rutina se pokusí plně zobrazit vlastnosti, které jsou nejblíže začátku. Format-Table
Pokud příkaz nemůže zobrazit všechny vlastnosti, odebere některé sloupce ze zobrazení. Toto chování můžete vidět v předchozím příkladu vlastnosti DependentServices .
Zabalení výstupu formátovací tabulky ve sloupcích
Pomocí parametru Wrap můžete vynutitFormat-Table
, aby se dlouhá data zalamovala do sloupce zobrazení. Použití parametru Wrap nemusí dělat, co očekáváte, protože používá výchozí nastavení, pokud také nezadáte automatické nastavení:
Get-Service -Name win* |
Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -Wrap
Name Status StartType DisplayName DependentServi
ces
---- ------ --------- ----------- --------------
WinDefend Running Automatic Windows Defender Antivirus Service {}
WinHttpAutoProxySvc Running Manual WinHTTP Web Proxy Auto-Discovery Service {NcaSvc,
iphlpsvc}
Winmgmt Running Automatic Windows Management Instrumentation {vmms,
TPHKLOAD,
SUService,
smstsmgr…}
WinRM Running Automatic Windows Remote Management (WS-Management) {}
Použití samotného parametru Wrap nezpomalí zpracování příliš. Použití funkce AutoSize k naformátování rekurzivního souboru se seznamem velkých adresářových struktur může trvat dlouhou dobu a před zobrazením prvních výstupních položek může trvat hodně paměti.
Pokud vás nezajímá zatížení systému, autoSize funguje dobře s parametrem Wrap. Počáteční sloupce stále používají tolik šířky, kolik potřebujete k zobrazení položek na jednom řádku, ale konečný sloupec je v případě potřeby zabalený.
Poznámka:
Některé sloupce nemusí být zobrazeny při prvním zadání nejširších sloupců. Nejlepších výsledků dosáhnete tak, že nejprve zadáte nejmenší datové prvky.
V následujícím příkladu nejprve určíme nejširší vlastnosti.
Get-Process -Name iexplore |
Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id
I při zabalení se vynechá poslední sloupec ID :
FileVersion Path Nam
e
----------- ---- ---
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE iex
plo
re
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files\Internet Explorer\iexplore.exe iex
plo
re
Uspořádání výstupu tabulky
Dalším užitečným parametrem pro tabulkový výstupní ovládací prvek je GroupBy. Delší tabulkové výpisy mohou být obtížné porovnat. Parametr GroupBy seskupuje výstup na základě hodnoty vlastnosti. Například můžeme seskupit služby podle startType pro snadnější kontrolu, vynechání hodnoty StartType z výpisu vlastností:
Get-Service -Name win* | Sort-Object StartType | Format-Table -GroupBy StartType
StartType: Automatic
Status Name DisplayName
------ ---- -----------
Running WinDefend Windows Defender Antivirus Service
Running Winmgmt Windows Management Instrumentation
Running WinRM Windows Remote Management (WS-Managem…
StartType: Manual
Status Name DisplayName
------ ---- -----------
Running WinHttpAutoProxyS… WinHTTP Web Proxy Auto-Discovery Serv…