Sdílet prostřednictvím


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 cmdletů 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 rutiny příkazů Format-Wide, Format-Lista Format-Table.

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 Vlastnost k určení požadovaných vlastností. Protože Format-Wide zobrazuje pouze jednu vlastnost, jeho Vlastnost parametr přijímá pouze jednu hodnotu, ale Vlastnost parametr Format-List a Format-Table přijímá seznam názvů vlastností.

V tomto příkladu výchozí výstup rutiny Get-Process ukazuje, že máme spuštěné dvě instance Internet Exploreru.

Get-Process -Name iexplore

Výchozí formát pro objekty Process zobrazí vlastnosti uvedené 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í Format-Wide pro jednopoložkový výstup

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

Ovládání displeje Format-Wide pomocí sloupce

Pomocí rutiny Format-Wide můžete současně zobrazit pouze jednu vlastnost. 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í Format-List 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í Format-List se zástupnými cardy

Cmdlet Format-List umožňuje použít zástupný znak jako hodnotu 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, použijte příkaz Format-List -Property *. Následující příkaz vygeneruje pro jeden proces více než 60 řádků výstupu:

Get-Process -Name iexplore | Format-List -Property *

I když je příkaz Format-List 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í Format-Table pro tabulkový výstup

Pokud k formátování výstupu příkazu Get-Process použijete rutinu Format-Table bez názvů vlastností, získáte úplně stejný výstup jako bez rutiny Format. PowerShell ve výchozím nastavení zobrazuje Proces objekty 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.

Zlepšování výstupu Format-Table

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í příkazu Format-Table 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)

Cmdlet Format-Table může stále zkrátit data, ale ke zkrácení dochází pouze na konci obrazovky. 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. Cmdlet se pokusí plně zobrazit vlastnosti nejblíže začátku. Pokud příkaz Format-Table 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 Format-Table do sloupců

Pomocí parametru Wrap můžete vynutit, aby se dlouhá data Format-Table zalámala do svého sloupce zobrazení. Použití parametru Wrap možná neudělá, co očekáváte, protože používá výchozí nastavení, pokud také nezadáte Automatická velikost:

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í parametru Wrap samotným nezpomaluje zpracování příliš. Použití automatické velikosti k naformátování rekurzivního seznamu souborů velké adresářové struktury může zabrat dlouhou dobu a spotřebovat hodně paměti před zobrazením prvních výstupních položek.

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í ID sloupce:

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 ovládací prvek tabulkového výstupu je GroupBy. Delší tabulkové výpisy mohou být obtížné porovnat. GroupBy seskupí výstup podle hodnoty vlastnosti. Služby můžeme například seskupit podle StartType, aby se usnadnila kontrola, když z výpisu vlastností vynecháme hodnotu StartType:

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…