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…