PowerShell Format-Table: Organiseer Uitvoer in Kolommen

PowerShell houdt de hand van een ontwikkelaar behoorlijk vast, maar het kan niet jouw gedachten lezen. Het kan niet intrinsiek weten wat voor soort uitvoer je zoekt. Het zal zijn beste gok geven via een standaard opmaak, maar het is aan jou om uiteindelijk te beslissen hoe je de uitvoer wilt hebben. Met behulp van de PowerShell Format-Table cmdlet kun je de uitvoer aanpassen naar jouw wens.

PowerShell heeft een opmaaksysteem dat standaarduitvoer heeft en de mogelijkheid om de opmaak van de uitvoer op basis van het objecttype te wijzigen. Als je liever niet leert over XML en hoe je altijd de uitvoer op een specifieke manier opmaakt, heb je ook cmdlets zoals Powershell format-table, Format-List en Format-Wide tot je beschikking. Een PS1XML-bestand op het bestandssysteem of het gebruik van een van de opmaak-cmdlets zal de uitvoer op verschillende manieren weergeven.

Zonder speciale opmaak te gebruiken, gebruikt PowerShell standaard zijn opmaak. Telkens wanneer een specifiek object wordt geretourneerd, zie je waarschijnlijk slechts een beperkt deel van de daadwerkelijke inhoud van dat object. Bijvoorbeeld, als je naar een enkele map kijkt, zie je alleen de bovenliggende map en een paar attributen.

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

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

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

Maar, leid dezelfde opdracht door naar Select-Object -Property * en zie wat er gebeurt.

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 heeft veel eigenschappen van het object voor u verborgen omdat u meestal niet al deze informatie hoeft te zien. PowerShell biedt een standaardweergave, maar dat betekent niet dat dat uw enige optie is. We kunnen deze weergave aanpassen via een opmaakcmdlet.

De meest populaire opmaakcmdlet is Format-Table. Volgens de PowerShell-help:

De Format-Table cmdlet formatteert de uitvoer van een opdracht als een tabel met de geselecteerde eigenschappen van het object in elke kolom. Het objecttype bepaalt de standaardlay-out en eigenschappen die in elke kolom worden weergegeven, maar u kunt de Parameter-parameter gebruiken om de eigenschappen te selecteren die u wilt zien.

U kunt ook een hash-tabel gebruiken om berekende eigenschappen aan een object toe te voegen voordat u het weergeeft en om de kolomkoppen in de tabel op te geven. Gebruik de Eigenschap- of GroupBy-parameter om een berekende eigenschap toe te voegen.

Het lijkt erop dat het gebruik van Powershell Format-Table en Select-Object om individuele objecteigenschappen te selecteren hetzelfde is, zolang de eigenschapswaarden niet langer zijn dan de huidige breedte van de console. Maar zodra u veel objecten probeert weer te geven, zult u zien dat Format-Table bij het tabelformaat blijft terwijl Select-Object terugkeert naar het weergeven van de eigenschappen op elke regel.

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

Powershell Format-Table-uitvoer zal altijd proberen informatie weer te geven via een tabelformaat. Als de eigenschapswaarden te lang zijn om te worden weergegeven, zal het ontbrekende tekst vervangen door ellipsen om aan te geven dat er meer informatie beschikbaar is maar gewoon niet wordt weergegeven.

De cmdlet Format-Table heeft veel verschillende manieren waarop het de uitvoer kan manipuleren. Bekijk de volledige documentatie van Format-Table via Microsoft docs.

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