PowerShell Format-Table: Organisiere die Ausgabe in Spalten

PowerShell hält einem Entwickler ziemlich die Hand, aber es kann nicht lesen, was Sie denken. Es kann von Natur aus nicht wissen, welche Art von Ausgabe Sie suchen. Es wird sein bestes Urteil über ein Standardformat abgeben, aber es liegt an Ihnen, letztendlich zu entscheiden, wie Sie die Ausgabe zurückgeben möchten. Mit dem PowerShell Format-Table cmdlet können Sie die Ausgabe nach Ihren Wünschen anpassen.

PowerShell hat ein Formatierungssystem, das Standardausgaben und die Möglichkeit bietet, wie die Ausgabe auf der Basis des Objekttyps formatiert wird. Wenn Sie sich lieber nicht mit XML und dem immer gleichen Formatieren der Ausgabe auf eine bestimmte Weise beschäftigen möchten, haben Sie auch cmdlets wie Powershell format-table, Format-List und Format-Wide zur Verfügung. Eine PS1XML-Datei im Dateisystem oder die Verwendung eines der Format-Cmdlets wird die Ausgabe auf verschiedene Weisen anzeigen.

Ohne spezielle Formatierung zu verwenden, verwendet PowerShell standardmäßig sein Format. Wenn ein bestimmtes Objekt zurückgegeben wird, sehen Sie wahrscheinlich nur einen begrenzten Teil dessen, was der tatsächliche Inhalt des Objekts ist. Zum Beispiel sehen Sie nur das übergeordnete Verzeichnis und einige Attribute, wenn Sie nur ein einzelnes Verzeichnis betrachten.

PS> Get-Item -Path C:\Windows\

Directory: C:\
Mode	LastWriteTime		Length	Name
---- 	------------- 		------	----

d-----	11/24/2017 9:57 AM 			Windows

Aber führen Sie dieselbe Befehlszeile an Select-Object -Property * und sehen Sie, was passiert.

PS> Get-Item -Path C:\Windows\ | Select-Object -Property *

PSPath 				: Microsoft.PowerShell.Core\FileSystem::C:\Windows\
PSParentPath 		: Microsoft.PowerShell.Core\FileSystem::C:\
PSChildName 		: Windows
PSDrive				: C
PSProvider 			: Microsoft.PowerShell.Core\FileSystem
PSIsContainer 		: True
Mode 				: d-----
BaseName 			: Windows
Target 				: {C:\Windows}
LinkType 			:
Name 				: Windows
FullName 			: C:\Windows\
Parent 				:
Exists 				: True
Root 				: C:\
Extension 			:
CreationTime 		: 3/18/2017 5:40:20 AM
CreationTimeUtc 	: 3/18/2017 11:40:20 AM
LastAccessTime 		: 11/24/2017 9:57:51 AM
LastAccessTimeUtc	: 11/24/2017 3:57:51 PM
LastWriteTime 		: 11/24/2017 9:57:51 AM
LastWriteTimeUtc 	: 11/24/2017 3:57:51 PM
Attributes 			: Directory

PowerShell hat viele Eigenschaften des Objekts vor Ihnen verborgen, weil Sie normalerweise nicht alle diese Informationen sehen müssen. PowerShell bietet eine Standardansicht, aber das bedeutet nicht, dass dies Ihre einzige Option ist. Wir können diese Ansicht über ein Format-Cmdlet ändern.

Das beliebteste Format-Cmdlet ist Format-Table. Laut der PowerShell-Hilfe:

Das Format-Table-Cmdlet formatiert die Ausgabe eines Befehls als Tabelle mit den ausgewählten Eigenschaften des Objekts in jeder Spalte. Der Objekttyp bestimmt das Standardlayout und die Eigenschaften, die in jeder Spalte angezeigt werden, aber Sie können den Parameter Property verwenden, um die Eigenschaften auszuwählen, die Sie sehen möchten.

Sie können auch eine Hashtabelle verwenden, um berechnete Eigenschaften zu einem Objekt hinzuzufügen, bevor es angezeigt wird, und um die Spaltenüberschriften in der Tabelle anzugeben. Verwenden Sie zum Hinzufügen einer berechneten Eigenschaft den Parameter Property oder GroupBy.

Die Verwendung von PowerShell Format-Table und Select-Object zum Auswählen einzelner Objekteigenschaften scheint gleich zu sein, solange die Eigenschaftswerte nicht über die aktuelle Breite der Konsole hinausgehen. Aber sobald Sie versuchen, viele Objekte anzuzeigen, werden Sie feststellen, dass Format-Table das tabellarische Format beibehält, während Select-Object wieder dazu übergeht, die Eigenschaften in jeder Zeile anzuzeigen.

PS> Get-Item -Path C:\Windows\ | Select-Object -Property LastAccessTime,Name,LastWriteTime,PSProvider,CreationTime

LastAccessTime 	: 11/24/2017 9:57:51 AM
Name 			: Windows
LastWriteTime 	: 11/24/2017 9:57:51 AM
PSProvider 		: Microsoft.PowerShell.Core\FileSystem
CreationTime 	: 3/18/2017 5:40:20 AM

PS> Get-Item -Path C:\Windows\ | Format-Table -Property LastAccessTime,Name,LastWriteTime,PSProvider,CreationTime

LastAccessTime			Name	LastWriteTime			PSProvider	CreationTime
-------------- 			---- 	------------- 			---------- 	------------
11/24/2017 9:57:51 AM 	Windows 11/24/2017 9:57:51 AM	Microsoft.PowerShell.Core\FileSystem	3/18/2017 5:40:20 AM

Die Ausgabe von Powershell Format-Table versucht immer, Informationen in tabellarischer Form anzuzeigen. Wenn die Eigenschaftswerte zu lang sind, um angezeigt zu werden, ersetzt es fehlenden Text durch Auslassungspunkte, um anzuzeigen, dass weitere Informationen verfügbar sind, aber nicht angezeigt werden.

Der Format-Table-Befehl hat viele verschiedene Möglichkeiten, wie er die Ausgabe manipulieren kann. Schau dir die vollständige Dokumentation von Format-Table über Microsoft Docs an.

Source:
https://adamtheautomator.com/powershell-format-table/