Windows PowerShell verfügt über einen Satz von Cmdlets, mit dem Sie steuern können, welche Eigenschaften für bestimmte Objekte angezeigt werden. Die Namen dieser Cmdlets beginnen stets mit dem Verb Format. Sie können damit eine oder mehrere Eigenschaften auswählen.
Zu den Format-Cmdlets zählen Format-Wide, Format-List, Format-Table und Format-Custom. Im vorliegenden Benutzerhandbuch werden nur die Cmdlets Format-Wide, Format-List und Format-Table beschrieben.
Alle Format-Cmdlets verfügen über Standardeigenschaften, die verwendet werden, wenn Sie keine speziellen Eigenschaften für die Anzeige angeben. Zudem verwenden alle Cmdlets denselben Parameternamen Property zum Angeben der anzuzeigenden Eigenschaften. Da Format-Wide nur eine Eigenschaft anzeigt, akzeptiert der Property-Parameter nur einen einzelnen Wert, die Property-Parameter von Format-List und Format-Table akzeptieren hingegen auch eine Liste von Eigenschaftennamen.
Wenn Sie den Befehl Get-Process -Name powershell verwenden und zwei Instanzen von Windows PowerShell ausgeführt werden, wird in etwa die folgende Ausgabe angezeigt:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 995 9 30308 27996 152 2.73 2760 powershell 331 9 23284 29084 143 1.06 3448 powershell
Im verbleibenden Teil dieses Abschnitts erfahren Sie, wie Sie die Anzeige der Ausgabe für diesen Befehl mithilfe von Format-Cmdlets ändern können.
Verwenden von Format-Wide für die Ausgabe einzelner Elemente
Das Cmdlet Format-Wide zeigt standardmäßig nur die Standardeigenschaft eines Objekts an. Die Informationen, die jedem Objekt zugeordnet sind, werden in einer einzelnen Spalte angezeigt:
PS> Get-Process -Name powershell | Format-Wide powershell powershell
Sie können auch eine andere Eigenschaft als die Standardeigenschaft angeben:
PS> Get-Process -Name powershell | Format-Wide -Property Id 2760 3448
Steuern der Anzeige von Format-Wide mit einer Spalte
Mit dem Cmdlet Format-Wide können Sie jeweils nur eine Eigenschaft anzeigen. Dies macht es zu einem hilfreichen Tool für die Anzeige einfacher Listen mit jeweils nur einem Element pro Zeile. Zum Abrufen einer einfachen Auflistung legen Sie den Wert des Column-Parameters auf 1 fest, indem Sie Folgendes eingeben:
Get-Command Format-Wide -Property Name -Column 1
Verwenden von Format-List zum Anzeigen einer Listenansicht
Mit dem Cmdlet Format-List wird ein Objekt als Liste angezeigt, wobei jede Eigenschaft bezeichnet und in einer eigenen Zeile angezeigt wird:
PS> Get-Process -Name powershell | Format-List Id : 2760 Handles : 1242 CPU : 3.03125 Name : powershell Id : 3448 Handles : 328 CPU : 1.0625 Name : powershell
Sie können beliebig viele Eigenschaften angeben:
PS> Get-Process -Name powershell | Format-List -Property ProcessName,FileVersion ,StartTime,Id ProcessName : powershell FileVersion : 1.0.9567.1 StartTime : 2006-05-24 13:42:00 Id : 2760 ProcessName : powershell FileVersion : 1.0.9567.1 StartTime : 2006-05-24 13:54:28 Id : 3448
Abrufen detaillierter Informationen mit Format-List und Platzhaltern
Das Cmdlet Format-List ermöglicht die Verwendung eines Platzhalters für den Wert des Property-Parameters. Damit können Sie detaillierte Informationen anzeigen. Häufig enthalten Objekte mehr Informationen als benötigt, daher zeigt Windows PowerShell standardmäßig nicht alle Eigenschaftenwerte an. Wenn Sie alle Eigenschaften eines Objekts anzeigen möchten, verwenden Sie den Befehl Format-List -Property * . Mit dem folgenden Befehl werden mehr als 60 Ausgabezeilen für einen einzelnen Prozess generiert:
Get-Process -Name powershell | Format-List -Property *
Der Befehl Format-List ist beim Anzeigen von Details hilfreich. Wenn Sie allerdings eine Übersicht über eine Ausgabe mit vielen Elementen benötigen, ist eine einfachere tabellarische Ansicht häufig sinnvoller.
Verwenden von Format-Table für eine tabellarische Ausgabe
Wenn Sie das Cmdlet Format-Table verwenden und zum Formatieren der Ausgabe für den Befehl Get-Process keine Eigenschaftennamen angeben, ist die Ausgabe mit einer Ausgabe ohne Formatierung identisch. Die Ursache hierfür ist, dass Prozesse i. d. R. in tabellarischer Form angezeigt werden. Dies gilt übrigens für die meisten Windows PowerShell-Objekte.
PS> Get-Process -Name powershell | Format-Table Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 1488 9 31568 29460 152 3.53 2760 powershell 332 9 23140 632 141 1.06 3448 powershell
Verbessern der Ausgabe für Format-Table (AutoSize)
Die tabellarische Ansicht ist für die Anzeige von vergleichbaren Informationen sehr hilfreich. Wenn die Anzeige allerdings schmal ist, wird die Auswertung der Daten allerdings schwierig. Wenn Sie z. B. den Prozesspfad, die ID, den Namen und die Firma anzeigen möchten, wird die Ausgabe der Spalten mit dem Prozesspfad und der Firma abgeschnitten:
PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company Path Name Id Company ---- ---- -- ------- C:\Program Files... powershell 2836 Microsoft Corpor...
Wenn Sie bei der Ausführung des Befehls Format-Table den AutoSize-Parameter angeben, berechnet Windows PowerShell die Spaltenbreite anhand der tatsächlich anzuzeigenden Daten. Dadurch wird die Spalte Path besser lesbar, die Spalte "Company" wird allerdings weiterhin abgeschnitten:
PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company - AutoSize Path Name Id Company ---- ---- -- ------- C:\Program Files\Windows PowerShell\v1.0\powershell.exe powershell 2836 Micr...
Das Cmdlet Format-Table schneidet die Daten möglicherweise auch weiterhin ab, dies erfolgt jedoch ausschließlich am Rand des Bildschirms. Mit Ausnahme der letzten Eigenschaft werden alle Eigenschaften in der für das längste Datenelement erforderlichen Spaltenbreite angezeigt. Damit wird die ordnungsgemäße Darstellung der Daten sichergestellt. Wenn Sie die Positionen von Path und Company in der Property-Werteliste vertauschen, ist der Firmennamen sichtbar, der Pfad ist jedoch abgeschnitten:
PS> Get-Process -Name powershell | Format-Table -Property Company,Name,Id,Path - AutoSize Company Name Id Path ------- ---- -- ---- Microsoft Corporation powershell 2836 C:\Program Files\Windows PowerShell\v1...
Beim Befehl Format-Table wird davon ausgegangen, dass eine Eigenschaft umso wichtiger ist, je weiter vorn sie in der Eigenschaftenliste steht. Daher versucht dieser Befehl, die Eigenschaften am Anfang der Liste möglichst vollständig anzuzeigen. Wenn mit dem Befehl Format-Table nicht alle Eigenschaften angezeigt werden können, werden einige Spalten aus der Anzeige entfernt, und es wird eine Warnung angezeigt. Dieses Verhalten können Sie überprüfen, indem Sie die Name-Eigenschaft am Ende der Liste platzieren:
PS> Get-Process -Name powershell | Format-Table -Property Company,Path,Id,Name - AutoSize WARNING: column "Name" does not fit into the display and was removed. Company Path I d ------- ---- - Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\powershell.exe 6
In der oben stehenden Ausgabe wurde die Spalte "ID" abgeschnitten, um Sie in die Auflistung einzupassen. Außerdem wird die Spalteüberschrift auf zwei Zeilen dargestellt. Die automatische Größenanpassung der Spalten führt nicht immer zum gewünschten Ergebnis.
Umbrechen der Ausgabe von Format-Table in Spalten (Wrap)
Mit dem Wrap-Parameter können Sie das Umbrechen längerer Format-Table-Daten in der Anzeigespalte erzwingen. Wenn Sie nur den Wrap-Parameter verwenden, wird das Ergebnis möglicherweise nicht Ihren Erwartungen entsprechen, da dabei die Standardeinstellungen verwendet werden, sofern Sie nicht auch den AutoSize-Parameter angeben:
PS> Get-Process -Name powershell | Format-Table -Wrap -Property Name,Id,Company, Path Name Id Company Path ---- -- ------- ---- powershell 2836 Microsoft Corporati C:\Program Files\Wi on ndows PowerShell\v1 .0\powershell.exe
Ein Vorteil der eigenständigen Verwendung des Wrap-Parameters besteht in der geringen Beeinträchtigung der Verarbeitungsgeschwindigkeit. Wenn Sie eine rekursive Dateiauflistung eines umfangreichen Verzeichnissystems ausführen und nicht den AutoSize-Parameter verwenden, kann der Vorgang eine sehr lange Zeit in Anspruch nehmen und viel Arbeitsspeicher beanspruchen, bevor die ersten Ausgabeelemente angezeigt werden.
Wenn die Systemauslastung kein Problem darstellt, kann AutoSize gut mit dem Wrap-Parameter zusammen verwendet werden. Den ersten Spalten wird stets eine ausreichende Breite für die Anzeige der Elemente auf einer Zeile reserviert. Dies entspricht der Angabe von AutoSize ohne den Wrap-Parameter. Der einzige Unterschied besteht darin, dass die letzte Spalte ggf. umbrochen wird:
PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I d,Company,Path Name Id Company Path ---- -- ------- ---- powershell 2836 Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\ powershell.exe
Einige Spalte werden möglicherweise nicht angezeigt, wenn Sie als erstes die breitesten Spalten angeben. Sie sollten zur Sicherheit als erstes die kleinsten Datenelemente angeben. Im folgenden Beispiel wird zuerst das sehr umfangreiche Path-Element angegeben. Trotz Umbruchs kann die letzte Spalte Name nicht angezeigt werden:
PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Path,I d,Company,Name WARNING: column "Name" does not fit into the display and was removed. Path Id Company ---- -- ------- C:\Program Files\Windows PowerShell\v1.0\powershell.exe 2836 Microsoft Corporat ion
Organisieren der tabellarischen Ausgabe ("-GroupBy")
Ein weiterer hilfreicher Parameter zum Steuern der tabellarischen Ausgabe ist GroupBy. Insbesondere umfangreiche tabellarische Auflistungen sind z. T. schwer zu vergleichen. Mit dem GroupBy-Parameter wird die Ausgabe anhand eines Eigenschaftenwerts gruppiert. Sie können z. B. Prozesse nach Firma gruppieren, um eine Inspektion zu vereinfachen, indem Sie den Wert "company" in der Eigenschaftenliste auslassen:
PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I d,Path -GroupBy Company Company: Microsoft Corporation Name Id Path ---- -- ---- powershell 1956 C:\Program Files\Windows PowerShell\v1.0\powershell.exe powershell 2656 C:\Program Files\Windows PowerShell\v1.0\powershell.exe