Formátumparancsok használata a kimeneti nézet módosításához

A PowerShell olyan parancsmagokkal rendelkezik, amelyekkel szabályozhatja, hogy az egyes objektumok tulajdonságai hogyan jelenjenek meg. Az összes parancsmag neve az igével Formatkezdődik. Ezek segítségével kiválaszthatja, hogy mely tulajdonságokat szeretné megjeleníteni.

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

Ez a cikk a , Format-Listés Format-Table a Format-Wideparancsmagokat ismerteti.

A PowerShell minden objektumtípusa alapértelmezett tulajdonságokkal rendelkezik, amelyeket akkor használ, ha nem választja ki a megjelenítendő tulajdonságokat. Minden parancsmag ugyanazt a tulajdonságparamétert használja annak megadásához, hogy mely tulajdonságok jelenjenek meg. Mivel Format-Wide csak egyetlen tulajdonságot jelenít meg, a tulajdonságparaméter csak egyetlen értéket vesz fel, de a tulajdonságnevek tulajdonságparaméterei Format-List és Format-Table elfogadása.

Ebben a példában a parancsmag alapértelmezett kimenete Get-Process azt mutatja, hogy az Internet Explorer két példánya fut.

Get-Process -Name iexplore

A Folyamatobjektumok alapértelmezett formátuma az itt látható tulajdonságokat jeleníti meg:

 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

A Format-Wide használata egyelemes kimenethez

A Format-Wide parancsmag alapértelmezés szerint csak az objektum alapértelmezett tulajdonságát jeleníti meg. Az egyes objektumokhoz társított információk egyetlen oszlopban jelennek meg:

Get-Command -Verb Format | Format-Wide
Format-Custom          Format-Hex
Format-List            Format-Table
Format-Wide

Megadhat egy nem alapértelmezett tulajdonságot is:

Get-Command -Verb Format | Format-Wide -Property Noun
Custom                 Hex
List                   Table
Wide

Formátumszintű megjelenítés vezérlése oszlopokkal

Format-Wide A parancsmaggal egyszerre csak egyetlen tulajdonság jeleníthető meg. Ez hasznossá teszi a nagyméretű listák több oszlopban való megjelenítését.

Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom                 Hex                  List
Table                  Wide

Formátumlista használata listanézethez

A Format-List parancsmag egy objektumot jelenít meg listaelem formájában, minden tulajdonságot külön sorban címkézve és megjelenítve:

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

Annyi tulajdonságot adhat meg, amennyit csak szeretne:

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

Részletes információk lekérése helyettesítő karakterekkel a Format-List használatával

A Format-List parancsmag lehetővé teszi helyettesítő karakter használatát a tulajdonságparaméter értékeként. Ez lehetővé teszi a részletes információk megjelenítését. Az objektumok gyakran a szükségesnél több információt tartalmaznak, ezért a PowerShell alapértelmezés szerint nem jeleníti meg az összes tulajdonságértéket. Egy objektum összes tulajdonságának megjelenítéséhez használja a Format-List -Property * parancsot. A következő parancs több mint 60 sornyi kimenetet generál egyetlen folyamathoz:

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

Bár a Format-List parancs hasznos a részletek megjelenítéséhez, ha több elemet tartalmazó kimenet áttekintésére van szüksége, az egyszerűbb táblázatos nézet gyakran hasznosabb.

Formátumtáblázat használata táblázatos kimenethez

Ha a Format-Table parancs kimenetének Get-Process formázásához nem megadott tulajdonságneveket tartalmazó parancsmagot használ, pontosan ugyanazt a kimenetet kapja, mint a parancsmag nélkül Format . A PowerShell alapértelmezés szerint táblázatos formátumban jeleníti meg a folyamatobjektumokat .

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

Feljegyzés

Get-Service csak Windows-platformokon érhető el.

A Format-Table kimenetének javítása

Bár a táblázatos nézet sok információ megjelenítéséhez hasznos, nehéz lehet értelmezni, ha a megjelenítés túl keskeny az adatokhoz. Az előző példában a kimenet csonkolt. Ha a parancs futtatásakor adja meg az AutoSize paramétert , a Format-Table PowerShell az oszlopszélességeket a tényleges megjelenített adatok alapján számítja ki. Ez olvashatóvá teszi az oszlopokat.

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)

Előfordulhat, hogy a Format-Table parancsmag továbbra is csonkolja az adatokat, de csak a képernyő végén csonkolja. Az utolsótól eltérő tulajdonságok annyi méretet kapnak, amennyi a leghosszabb adatelem helyes megjelenítéséhez szükséges.

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) {}

A Format-Table parancs feltételezi, hogy a tulajdonságok fontossági sorrendben vannak felsorolva. A parancsmag megpróbálja teljesen megjeleníteni az elejéhez legközelebbi tulajdonságokat. Ha a Format-Table parancs nem tudja megjeleníteni az összes tulajdonságot, eltávolít néhány oszlopot a megjelenítésből. Ezt a viselkedést a DependentServices tulajdonság előző példájában tekintheti meg.

Formázási tábla kimenetének körbefuttatása oszlopokban

A Wrap paraméterrel kényszerítheti a hosszadalmas Format-Table adatok tördelésére a megjelenítési oszlopban. Előfordulhat, hogy a Wrap paraméter használata nem azt teszi, amit vár, mivel az alapértelmezett beállításokat használja, ha nem adja meg az Automatikus méretezést is:

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) {}

A Wrap paraméter önmagában nem lassítja a feldolgozást. Az AutoSize használata azonban egy nagy könyvtárstruktúra rekurzív fájllistáinak formázásához hosszú időt vehet igénybe, és sok memóriát használhat az első kimeneti elemek megjelenítése előtt.

Ha nem aggódik a rendszer terhelése miatt, akkor az AutoSize jól működik a Wrap paraméterrel. A kezdeti oszlopok továbbra is a szükséges szélességet használják az elemek egy sorban való megjelenítéséhez, de szükség esetén a végső oszlop be van csomagolva.

Feljegyzés

Előfordulhat, hogy egyes oszlopok nem jelennek meg a legszélesebb oszlopok első megadásakor. A legjobb eredmény érdekében először adja meg a legkisebb adatelemeket.

Az alábbi példában először a legszélesebb tulajdonságokat adhatja meg.

Get-Process -Name iexplore |
    Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id

Még a körbefuttatás esetén is a végleges Azonosító oszlop hiányzik:

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

Táblakimenet rendszerezése

A táblázatos kimeneti vezérlő egy másik hasznos paramétere a GroupBy. A hosszabb táblázatos listaelemeket különösen nehéz lehet összehasonlítani. A GroupBy paraméter tulajdonságérték alapján csoportosítja a kimenetet. Például csoportosíthatjuk a szolgáltatásokat a StartType szerint a könnyebb ellenőrzés érdekében, és kihagyhatjuk a StartType értéket a tulajdonságlistából:

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…