Delen via


Opmaakopdrachten gebruiken om de uitvoerweergave te veranderen

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 cmdlets Format-Wide, Format-Listen Format-Table beschreven.

Elk objecttype in PowerShell heeft standaardeigenschappen die worden gebruikt wanneer u niet de eigenschappen selecteert die moeten worden weergegeven. Elke cmdlet gebruikt dezelfde eigenschap parameter om op te geven welke eigenschappen u wilt weergeven. Omdat Format-Wide slechts één eigenschap weergeeft, heeft de parameter eigenschap slechts één waarde, maar de parameter Eigenschap van Format-List en Format-Table accepteert een lijst met eigenschapsnamen.

In dit voorbeeld ziet u in de standaarduitvoer van Get-Process cmdlet dat er twee exemplaren van Internet Explorer worden uitgevoerd.

Get-Process -Name iexplore

In de standaardindeling voor Process-objecten worden de eigenschappen getoond die hier zichtbaar zijn.

 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

Met de cmdlet Format-Wide wordt standaard alleen de standaardeigenschap van een object weergegeven. 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 van Format-Wide beheren met kolom

Met de cmdlet Format-Wide 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

Format-List gebruiken voor een lijstweergave

De cmdlet Format-List 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 Format-List met jokertekens

Met de cmdlet Format-List kunt u een wildcard gebruiken als de waarde van de -eigenschap-parameter. 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 opdracht Format-List -Property *. Met de volgende opdracht worden meer dan 60 regels uitvoer gegenereerd voor één proces:

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

Hoewel de opdracht Format-List handig is voor het weergeven van details, is een eenvoudigere tabelweergave vaak nuttiger als u een overzicht wilt van uitvoer met veel items.

Format-Table gebruiken voor uitvoer in tabelvorm

Als u de Format-Table-cmdlet gebruikt zonder eigenschapsnamen die zijn opgegeven om de uitvoer van de opdracht Get-Process op te maken, krijgt u precies dezelfde uitvoer als zonder een Format cmdlet. In PowerShell worden standaard Proces--objecten 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.

Format-Table-uitvoer 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 opdracht Format-Table 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 afkorten, maar het kort alleen af 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 opdracht Format-Table wordt ervan uitgegaan dat eigenschappen worden vermeld in volgorde van belang. De cmdlet probeert de eigenschappen die het dichtst bij het begin staan, volledig weer te geven. Als de opdracht Format-Table 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.

Format-Table-uitvoer in kolommen plaatsen

U kunt lange Format-Table gegevens in de weergavekolom laten teruglopen door gebruik te maken 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 aanpassenopgeeft:

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

Door de parameter Wrap zelf te gebruiken, wordt de verwerking niet veel vertraagd. Het gebruik van AutoSize echter om een recursieve bestandsvermelding van een grote mapstructuur op te maken, kan lang duren en veel geheugen gebruiken voordat de eerste uitvoeritems worden weergegeven.

Als u zich geen zorgen maakt over 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 wrapping 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

Het ordenen van tabeluitvoer

Een andere handige parameter voor tabulaire uitvoercontrole is GroupBy. Het kan lastig zijn om langere lijsten in tabelvorm te vergelijken. De GroupBy parameter groepeert de uitvoer op basis van een eigenschapswaarde. We kunnen bijvoorbeeld services groeperen op StartType voor een eenvoudigere inspectie, waarbij de StartType-waarde 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…