Format-opdrachten gebruiken om de uitvoerweergave te wijzigen
PowerShell heeft een set cmdlets waarmee u kunt bepalen hoe eigenschappen worden weergegeven voor bepaalde objecten. 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 cmdlets , en Format-Table beschreven.
Elk objecttype in PowerShell heeft standaardeigenschappen die worden gebruikt wanneer u niet opgeeft welke eigenschappen moeten worden weergegeven. Elke cmdlet gebruikt ook dezelfde eigenschapsparameter om op te geven welke eigenschappen u wilt weergeven. Omdat slechts één eigenschap toont, heeft de eigenschapsparameter slechts één waarde, maar de eigenschapsparameters van en Format-Wide accepteren een lijst met Format-List Format-Table eigenschapsnamen.
In dit voorbeeld toont de standaarduitvoer van de cmdlet dat er twee exemplaren van Get-Process Internet Explorer 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
Met Format-Wide voor Single-Item uitvoer
De Format-Wide cmdlet geeft standaard alleen de standaard-eigenschap 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-standaard eigenschap opgeven:
Get-Command -Verb Format | Format-Wide -Property Noun
Custom Hex
List Table
Wide
Weergave Format-Wide met kolom beheren
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
Een Format-List voor een lijstweergave gebruiken
De cmdlet geeft een object weer in de vorm van een vermelding, met elke eigenschap gelabeld en Format-List 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 zoveel 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 verkrijgen met behulp van Format-List 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 . De volgende opdracht genereert meer dan 60 regels uitvoer voor één proces:
Get-Process -Name iexplore | Format-List -Property *
Hoewel de opdracht handig is voor het weergeven van details, is een eenvoudigere tabelweergave vaak handiger als u een overzicht wilt van de uitvoer die veel Format-List items bevat.
Gebruik Format-Table voor tabellaire uitvoer
Als u de cmdlet zonder eigenschapsnamen die zijn opgegeven om de uitvoer van de opdracht op te maken, krijgt u precies dezelfde uitvoer als u zonder Format-Table Get-Process een Format cmdlet. Standaard geeft PowerShell Procesobjecten weer in tabelvorm.
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...
De Format-Table verbeteren (automatisch vergroten/weer)
Hoewel een tabelweergave handig is voor het weergeven van veel informatie, kan het lastig zijn om te interpreteren als de weergave te beperkt is voor de gegevens. In het vorige voorbeeld is de uitvoer afgekapt. Als u de parameter AutoSize opgeeft bij het uitvoeren van de opdracht, berekent PowerShell kolombreedten op basis van de Format-Table 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, anders dan het laatste element dat wordt weergegeven, krijgen net zo groot als nodig zijn om het 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) {}
De Format-Table opdracht gaat ervan uit dat eigenschappen worden vermeld in volgorde van belang. Daarom wordt geprobeerd de eigenschappen aan het begin volledig weer te geven. Als de Format-Table opdracht niet alle eigenschappen kan weergeven, worden enkele kolommen uit de weergave verwijderd. U kunt dit gedrag zien in het vorige voorbeeld van de eigenschap DependentServices.
Wrapping Format-Table Output in Columns (Wrap)
U kunt forceer dat lange gegevens in de weergavekolom worden verpakt Format-Table met behulp van de parameter Wrap. Het gebruik van de parameter Wrap doet mogelijk niet wat u verwacht, omdat deze standaardinstellingen gebruikt als u niet ook AutoSize 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) {}
Het gebruik van de parameter Wrap zelf vertraagt de verwerking niet erg veel. Het gebruik van AutoSize om een recursieve bestandslijst van een grote mapstructuur op te maken, 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 initiële kolommen gebruiken nog steeds zo veel breedte als nodig is om items op één regel weer te geven, maar de laatste kolom wordt, indien 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 het verpakken wordt de laatste kolom Id 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 (-GroupBy)
Een andere handige parameter voor het besturingselement voor tabellaire uitvoer is GroupBy. Met name langere vermeldingen in tabelvorm kunnen lastig te vergelijken zijn. Met de parameter GroupBy wordt uitvoer gegroepeerd op basis van een eigenschapswaarde. We kunnen bijvoorbeeld services groeperen op StartType voor eenvoudigere inspectie, door de waarde StartType weg te laten uit de eigenschappenlijst:
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…