Använd formatkommandon för att ändra utdatavyn

PowerShell har en uppsättning cmdlets som gör att du kan styra hur egenskaper visas för specifika objekt. Namnen på alla cmdlets börjar med verbet Format . De gör att du kan välja vilka egenskaper som du vill visa.

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

I den här artikeln beskrivs Format-Wide Format-List cmdletarna , Format-Table och .

Varje objekttyp i PowerShell har standardegenskaper som används när du inte anger vilka egenskaper som ska visas. Varje cmdlet använder också samma egenskapsparameter för att ange vilka egenskaper som du vill visa. Eftersom bara visar en enskild egenskap tar dess egenskapsparameter bara ett enda värde, men egenskapsparametrarna för och Format-Wide accepterar en lista med Format-List Format-Table egenskapsnamn.

I det här exemplet visar standardutdata Get-Process för cmdleten att vi har två instanser av Internet Explorer körs.

Get-Process -Name iexplore

Standardformatet för processobjekt visar de egenskaper som visas här:

 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

Använda Format-Wide för Single-Item utdata

Format-WideCmdleten visar som standard bara standardegenskapen för ett objekt. Informationen som är associerad med varje objekt visas i en enda kolumn:

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

Du kan också ange en egenskap som inte är standard:

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

Kontrollera Format-Wide visas med kolumn

Med Format-Wide cmdleten kan du bara visa en enda egenskap i taget. Detta gör det användbart för att visa stora listor i flera kolumner.

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

Använda Format-List för en listvy

Format-ListCmdleten visar ett objekt i form av en lista, där varje egenskap är märkt och visas på en separat rad:

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

Du kan ange så många egenskaper du vill:

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

Hämta detaljerad information med hjälp Format-List med jokertecken

Med Format-List cmdleten kan du använda ett jokertecken som värde för dess egenskapsparameter. På så sätt kan du visa detaljerad information. Objekt innehåller ofta mer information än du behöver, vilket är anledningen till att PowerShell inte visar alla egenskapsvärden som standard. Om du vill visa alla egenskaper för ett objekt använder du Format-List -Property * kommandot . Följande kommando genererar över 60 rader med utdata för en enda process:

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

Även om kommandot är användbart för att visa detaljer, är en enklare tabellvy ofta mer användbar om du vill ha en översikt över utdata som Format-List innehåller många objekt.

Använda Format-Table för tabellutdata

Om du använder cmdleten utan egenskapsnamn som angetts för att formatera kommandots utdata får du exakt samma utdata som du gör Format-Table Get-Process utan en Format cmdlet. Som standard visar PowerShell processobjekt i tabellformat.

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

Förbättra Format-Table utdata (autosize)

Även om en tabellvy är användbar för att visa mycket information kan det vara svårt att tolka om visningen är för smal för data. I föregående exempel trunkeras utdata. Om du anger parametern AutoSize när du kör kommandot beräknar PowerShell kolumnbredder Format-Table baserat på faktiska data som visas. Det gör att kolumnerna blir läsbara.

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)

Format-TableCmdleten kan fortfarande trunkera data, men den trunkeras bara i slutet av skärmen. Egenskaper, förutom de som visas sist, får så mycket storlek som de behöver för att det längsta dataelementet ska visas korrekt.

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

Kommandot Format-Table förutsätter att egenskaperna visas i prioritetsordning. Det gör att den försöker visa de egenskaper som ligger närmast början. Om Format-Table kommandot inte kan visa alla egenskaper tas vissa kolumner bort från skärmen. Du kan se det här beteendet i exemplet med egenskapen DependentServices.

Omsluta Format-Table utdata i kolumner (omsluta)

Du kan tvinga långa Format-Table data att omsluta i dess visningskolumn med hjälp av parametern Wrap. Att använda parametern Wrap kanske inte gör det du förväntar dig, eftersom den använder standardinställningar om du inte också anger AutoSize:

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

Om du använder parametern Wrap i sig blir bearbetningen inte så långsam. Att använda AutoSize för att formatera en rekursiv fillista över en stor katalogstruktur kan dock ta lång tid och använda mycket minne innan de första utdataobjekten visas.

Om du inte är orolig för systembelastningen fungerar AutoSize bra med parametern Wrap. De inledande kolumnerna använder fortfarande så mycket bredd som behövs för att visa objekt på en rad, men den sista kolumnen är omsluten om det behövs.

Anteckning

Vissa kolumner kanske inte visas när du anger de bredaste kolumnerna först. För bästa resultat anger du de minsta dataelementen först.

I följande exempel anger vi de bredaste egenskaperna först.

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

Även om du vill omsluta utelämnas den sista Id-kolumnen:

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

Ordna tabellutdata (-GroupBy)

En annan användbar parameter för tabellutdatakontroll är GroupBy. Längre tabelllistor i synnerhet kan vara svåra att jämföra. Parametern GroupBy grupperar utdata baserat på ett egenskapsvärde. Vi kan till exempel gruppera tjänster efter StartType för enklare inspektion, och utelämna StartType-värdet från egenskapslistan:

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…