Opdrachten opmaken gebruiken om de uitvoerweergave te wijzigen
PowerShell heeft een set cmdlets waarmee u kunt bepalen hoe eigenschappen voor bepaalde objecten worden weergegeven. De namen van alle cmdlets beginnen met het werkwoord Format
. Hiermee kunt u selecteren welke eigenschappen u wilt weergeven.
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
In dit artikel worden de Format-Wide
, Format-List
en Format-Table
cmdlets beschreven.
Elk objecttype in PowerShell heeft standaardeigenschappen die worden gebruikt wanneer u niet de eigenschappen selecteert die moeten worden weergegeven. Elke cmdlet gebruikt dezelfde eigenschapsparameter om op te geven welke eigenschappen u wilt weergeven. Omdat Format-Wide
slechts één eigenschap wordt weergegeven, heeft de eigenschapsparameter slechts één waarde, maar de eigenschapsparameters van Format-List
en Format-Table
accepteren een lijst met eigenschapsnamen.
In dit voorbeeld ziet u in de standaarduitvoer van Get-Process
de cmdlet dat er twee exemplaren van Internet Explorer worden uitgevoerd.
Get-Process -Name iexplore
In de standaardindeling voor procesobjecten worden de eigenschappen weergegeven die hier worden weergegeven:
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
Format-Wide gebruiken voor uitvoer van één item
De Format-Wide
cmdlet geeft standaard alleen de standaardeigenschap van een object weer. De informatie die aan elk object is gekoppeld, wordt weergegeven in één kolom:
Get-Command -Verb Format | Format-Wide
Format-Custom Format-Hex
Format-List Format-Table
Format-Wide
U kunt ook een niet-standaardeigenschap opgeven:
Get-Command -Verb Format | Format-Wide -Property Noun
Custom Hex
List Table
Wide
Weergave voor hele opmaak beheren met kolom
Met de Format-Wide
cmdlet kunt u slechts één eigenschap tegelijk weergeven. Dit maakt het handig voor het weergeven van grote lijsten in meerdere kolommen.
Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom Hex List
Table Wide
Opmaaklijst gebruiken voor een lijstweergave
De Format-List
cmdlet geeft een object weer in de vorm van een vermelding, waarbij elke eigenschap wordt gelabeld en weergegeven op een afzonderlijke regel:
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
U kunt zo veel eigenschappen opgeven als u wilt:
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
Gedetailleerde informatie ophalen met behulp van Opmaaklijst met jokertekens
Met Format-List
de cmdlet kunt u een jokerteken gebruiken als de waarde van de eigenschapsparameter . Hiermee kunt u gedetailleerde informatie weergeven. Objecten bevatten vaak meer informatie dan u nodig hebt. Daarom worden in PowerShell niet standaard alle eigenschapswaarden weergegeven. Als u alle eigenschappen van een object wilt weergeven, gebruikt u de Format-List -Property *
opdracht. Met de volgende opdracht worden meer dan 60 regels uitvoer gegenereerd voor één proces:
Get-Process -Name iexplore | Format-List -Property *
Hoewel de Format-List
opdracht handig is om details weer te geven, is een eenvoudigere tabelweergave vaak nuttiger als u een overzicht wilt van de uitvoer die veel items bevat.
Opmaaktabel gebruiken voor uitvoer in tabelvorm
Als u de Format-Table
cmdlet zonder eigenschapsnamen gebruikt die zijn opgegeven om de uitvoer van de Get-Process
opdracht op te maken, krijgt u precies dezelfde uitvoer als zonder Format
cmdlet. In PowerShell worden standaard procesobjecten in tabelvorm weergegeven.
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...
Notitie
Get-Service
is alleen beschikbaar op Windows-platforms.
Indelingstabeluitvoer verbeteren
Hoewel een tabelweergave handig is voor het weergeven van veel informatie, kan het lastig zijn om te interpreteren of de weergave te smal is voor de gegevens. In het vorige voorbeeld wordt de uitvoer afgekapt. Als u de parameter AutoSize opgeeft wanneer u de Format-Table
opdracht uitvoert, berekent PowerShell kolombreedten op basis van de werkelijke gegevens die worden weergegeven. Hierdoor kunnen de kolommen worden gelezen.
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)
De Format-Table
cmdlet kan nog steeds gegevens afkappen, maar wordt alleen afgekapt aan het einde van het scherm.
Eigenschappen, met uitzondering van de laatste weergegeven, krijgen net zoveel grootte als nodig is om hun langste gegevenselement correct weer te geven.
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) {}
Bij de Format-Table
opdracht wordt ervan uitgegaan dat eigenschappen worden vermeld in volgorde van urgentie. De cmdlet probeert de eigenschappen die het dichtst bij het begin staan, volledig weer te geven. Als de Format-Table
opdracht niet alle eigenschappen kan weergeven, worden sommige kolommen uit de weergave verwijderd. U kunt dit gedrag zien in het vorige voorbeeld van de eigenschap DependentServices .
Uitvoer van tabelterugloop in kolommen
U kunt afdwingen dat Format-Table
lange gegevens in de weergavekolom worden verpakt met behulp van de parameter Wrap . Het gebruik van de parameter Wrap doet mogelijk niet wat u verwacht, omdat er standaardinstellingen worden gebruikt als u niet ook Automatisch aanpassen opgeeft:
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) {}
Als u de parameter Wrap zelf gebruikt, wordt de verwerking niet veel vertraagd. Het gebruik van AutoSize voor het opmaken van een recursieve bestandsvermelding van een grote mapstructuur kan echter lang duren en veel geheugen gebruiken voordat de eerste uitvoeritems worden weergegeven.
Als u zich geen zorgen maakt over de systeembelasting, werkt AutoSize goed met de parameter Wrap . De eerste kolommen gebruiken nog steeds zoveel breedte als nodig is om items op één regel weer te geven, maar de laatste kolom wordt zo nodig verpakt.
Notitie
Sommige kolommen worden mogelijk niet weergegeven wanneer u eerst de breedste kolommen opgeeft. Geef voor de beste resultaten eerst de kleinste gegevenselementen op.
In het volgende voorbeeld geven we eerst de breedste eigenschappen op.
Get-Process -Name iexplore |
Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id
Zelfs bij terugloop wordt de laatste id-kolom weggelaten:
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
Tabeluitvoer ordenen
Een andere handige parameter voor het besturingselement voor uitvoer in tabelvorm is GroupBy. Het kan lastig zijn om langere lijsten in tabelvorm te vergelijken. Uitvoer van de GroupBy-parametergroepen op basis van een eigenschapswaarde. We kunnen bijvoorbeeld services groeperen op StartType voor eenvoudigere inspectie, zodat de Waarde StartType wordt weggelaten uit de lijst met eigenschappen:
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…