Verwenden von Formatierungsbefehlen zum Ändern der Ausgabeanzeige

PowerShell umfasst eine Reihe von Cmdlets, mit denen Sie steuern können, wie Eigenschaften für bestimmte Objekte angezeigt werden. Der Name jedes dieser Cmdlets beginnt mit dem Verb Format. Mit diesen können Sie auswählen, welche Eigenschaften angezeigt werden sollen.

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 diesem Artikel werden die Cmdlets Format-Wide, Format-List und Format-Table näher erläutert.

Jeder Objekttyp in PowerShell besitzt Standardeigenschaften, die verwendet werden, wenn Sie nicht auswählen, welche Eigenschaften angezeigt werden sollen. Für jedes Cmdlet wird derselbe Property-Parameter verwendet, um anzugeben, welche Eigenschaften angezeigt werden sollen. Weil Format-Wide nur eine einzelne Eigenschaft anzeigt, übernimmt deren Property-Parameter nur einen einzelnen Wert, wogegen die Property-Parameter von Format-List und Format-Table eine Liste von Eigenschaftsnamen akzeptieren.

In diesem Beispiel gibt die Standardausgabe des Cmdlets Get-Process an, dass zwei Instanzen von Internet Explorer ausgeführt werden.

Get-Process -Name iexplore

Das Standardformat für Prozessobjekte zeigt die folgenden Eigenschaften an:

 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

Verwenden von „Format-Wide“ für die Ausgabe eines einzelnen Elements

Das Cmdlet Format-Wide zeigt standardmäßig nur die Standardeigenschaft eines Objekts an. Die Informationen, die zu dem jeweiligen Objekt gehören, werden in einer einzelnen Spalte angezeigt:

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

Sie können auch eine nicht standardmäßige Eigenschaft angeben:

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

Steuern der „Format-Wide“-Anzeige mit Spalten

Mit dem Cmdlet Format-Wide können Sie immer nur jeweils eine Eigenschaft anzeigen. Dadurch ist es zum Anzeigen großer Listen in mehreren Spalten nützlich.

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

Verwenden von „Format-List“ für eine Listenansicht

Das Cmdlet Format-List zeigt ein Objekt in Form einer Auflistung an, wobei jede Eigenschaft in einer eigenen Zeile beschriftet und angezeigt wird:

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

Sie können Sie beliebig viele Eigenschaften angeben:

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

Abrufen von ausführliche Informationen durch Verwenden von „Format-List“ mit Platzhaltern

Das Cmdlet Format-List ermöglicht es, einen Platzhalter als Wert für den Property-Parameter zu verwenden. Dies ermöglicht es Ihnen, ausführliche Informationen anzuzeigen. Häufig enthalten Objekte mehr Informationen als Sie benötigen. Dies ist der Grund, warum PowerShell nicht standardmäßig alle Eigenschaftswerte anzeigt. Verwenden Sie den Befehl Format-List -Property *, um alle Eigenschaften eines Objekts anzuzeigen. Der folgende Befehl generiert eine Ausgabe mit mehr als 60 Zeilen für einen einzelnen Prozess:

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

Obwohl der Befehl Format-List nützlich ist, um Details anzuzeigen, ist eine einfachere Tabellenansicht oft nützlicher, wenn Sie einen Überblick über eine Ausgabe wünschen, die viele Elemente enthält.

Verwenden von „Format-Table“ für die tabellarische Ausgabe

Falls Sie die Ausgabe des Befehls Get-Process mit dem Cmdlet Format-Table ohne angegebene Eigenschaftennamen formatieren, erhalten Sie genau dieselbe Ausgabe wie ohne das Cmdlet Format. Standardmäßig zeigt PowerShell Prozessobjekte im Tabellenformat an.

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

Hinweis

Get-Service ist nur auf Windows-Plattformen verfügbar.

Verbessern der Ausgabe von „Format-Table“

Eine Tabellenansicht ist zwar zum Anzeigen großer Informationsmengen nützlich, kann aber zu Interpretationsschwierigkeiten führen, wenn die Anzeige zu schmal für die Daten ist. Im vorherigen Beispiel ist die Ausgabe abgeschnitten. Falls Sie den AutoSize-Parameter angeben, wenn Sie den Befehl Format-Table ausführen, berechnet PowerShell die Spaltenbreiten anhand der tatsächlich angezeigten Daten. Dadurch werden die Spalten lesbar.

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)

Im Cmdlet Format-Table werden möglicherweise weiterhin Daten abgeschnitten, aber nur am Ende des Bildschirms. Jede Eigenschaft außer der letzten angezeigten Eigenschaft erhält so viel Breite, wie erforderlich ist, damit ihr längstes Datenelement richtig angezeigt wird.

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

Der Befehl Format-Table geht davon aus, dass Eigenschaften nach Wichtigkeit aufgelistet werden. Daher wird im Cmdlet versucht, die Eigenschaften, die dem Anfang am nächsten sind, vollständig anzuzeigen. Wenn der Befehl Format-Table nicht alle Eigenschaften anzeigen kann, entfernt er einige Spalten aus der Anzeige. Dieses Verhalten wird im vorherigen Beispiel mit der DependentServices-Eigenschaft veranschaulicht.

Umbrechen der „Format-Table“-Ausgabe in Spalten

Sie können erzwingen, dass zu lange Format-Table-Daten innerhalb ihrer Anzeigespalte umbrochen werden, indem Sie den Wrap-Parameter verwenden. Das Verwenden des Wrap-Parameters führt möglicherweise nicht zum von Ihnen erwarteten Ergebnis, weil die Standardeinstellungen verwendet werden, wenn Sie nicht auch AutoSize angeben:

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

Die Verwendung des Wrap-Parameters an sich verlangsamt die Verarbeitung kaum. Wenn Sie AutoSize für das Formatieren einer rekursiven Dateiliste einer großen Verzeichnisstruktur verwenden, kann dieser Vorgang viel Zeit und Arbeitsspeicher in Anspruch nehmen, bevor die ersten Ausgabeelemente angezeigt werden.

Wenn die Systemauslastung keine Rolle spielt, funktioniert AutoSize gut mit dem Wrap-Parameter. Die ursprünglichen Spalten verwenden weiterhin so viel Breite wie erforderlich, um Elemente in einer Zeile anzuzeigen, aber die letzte Spalte wird ggf. umschlossen.

Hinweis

Einige Spalten werden möglicherweise nicht angezeigt, wenn Sie zuerst die breiteste Spalte angeben. Geben Sie für optimale Ergebnisse zuerst die kleinsten Datenelemente an.

Im folgenden Beispiel werden die breitesten Eigenschaften zuerst angegeben.

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

Selbst mit Umschließung wird die letzte Id-Spalte ausgelassen:

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

Ordnen der Tabellenausgabe

Eine weiterer nützlicher Parameter für das Steuern von tabellarischer Ausgabe ist GroupBy. Es kann insbesondere schwierig sein, längere tabellarische Auflistungen zu vergleichen. Mit dem GroupByParameter wird die Ausgabe anhand eines Eigenschaftswerts gruppiert. Beispielsweise können Dienste zur einfacheren Überprüfung nach StartType gruppiert werden. Dadurch wird der StartType-Wert aus der Eigenschaftenliste entfernt:

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…