Använda formatkommandon för att ändra utdatavyn
PowerShell har en uppsättning cmdletar som gör att du kan styra hur egenskaper visas för specifika objekt. Namnen på alla cmdletar börjar med verbet Format
. De låter dig välja vilka egenskaper 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 Format-Wide
här artikeln beskrivs cmdletarna , Format-List
och Format-Table
.
Varje objekttyp i PowerShell har standardegenskaper som används när du inte väljer de egenskaper som ska visas. Varje cmdlet använder samma egenskapsparameter för att ange vilka egenskaper du vill visa. Eftersom Format-Wide
endast visar en enskild egenskap tar dess egenskapsparameter bara ett enda värde, men egenskapsparametrarna Format-List
för och Format-Table
accepterar en lista med egenskapsnamn.
I det här exemplet visar standardutdata för Get-Process
cmdlet att vi har två instanser av Internet Explorer som körs.
Get-Process -Name iexplore
Standardformatet för Process-objekt 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 utdata för ett objekt
Cmdleten Format-Wide
visar som standard endast 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
Styra formatomfattande visning med kolumn
Med cmdleten Format-Wide
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
Cmdleten Format-List
visar ett objekt i form av en lista med varje egenskap 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 som 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
Få detaljerad information med hjälp av Format-List med jokertecken
Med Format-List
cmdleten kan du använda ett jokertecken som värdet 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 mer än 60 rader utdata för en enda process:
Get-Process -Name iexplore | Format-List -Property *
Format-List
Ä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 innehåller många objekt.
Använda Format-Table för tabellutdata
Om du använder cmdleten Format-Table
utan några egenskapsnamn som angetts för att formatera utdata för Get-Process
kommandot får du exakt samma utdata som du gör 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...
Kommentar
Get-Service
är endast tillgängligt på Windows-plattformar.
Förbättra formattabellutdata
Ä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 Format-Table
kommandot beräknar PowerShell kolumnbredder baserat på de faktiska data som visas. Detta gör kolumnerna 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)
Cmdleten Format-Table
kan fortfarande trunkera data, men den trunkeras bara i slutet av skärmen.
Andra egenskaper än den senaste som visas får så stor storlek som de behöver för att deras längsta dataelement 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. Cmdleten försöker visa de egenskaper som ligger närmast början. Format-Table
Om kommandot inte kan visa alla egenskaper, tar det bort vissa kolumner från visningen. Du kan se det här beteendet i föregående exempel i egenskapen DependentServices .
Omsluta format-tabellutdata i kolumner
Du kan tvinga långa Format-Table
data att omslutas i dess visningskolumn med hjälp av parametern Wrap . Om du använder parametern Wrap kanske du inte gör vad 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) {}
Att använda parametern Wrap i sig saktar inte ned bearbetningen särskilt mycket. Det kan dock ta lång tid att använda AutoSize för att formatera en rekursiv fillista över en stor katalogstruktur och använda mycket minne innan du visar de första utdataobjekten.
Om du inte bryr dig om systembelastning 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 om det behövs.
Kommentar
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 med omslutning 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
En annan användbar parameter för tabellutdatakontroll är GroupBy. Det kan vara svårt att jämföra längre tabelllistor i synnerhet. 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…