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-Lista 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…