Dela via


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-Widehär artikeln beskrivs cmdletarna , Format-Listoch 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…