PowerShell Format-Table: Organizza l’output in colonne

PowerShell tiene una mano molto presente per lo sviluppatore, ma non può leggere nella tua mente. Non può sapere di default che tipo di output stai cercando. Fornirà il suo miglior tentativo tramite un formato predefinito, ma spetta a te decidere come desideri che venga restituito l’output. Utilizzando il cmdlet Format-Table di PowerShell, puoi personalizzare l’output secondo le tue preferenze.

PowerShell ha un sistema di formattazione che offre un output predefinito e la possibilità di cambiare il formato dell’output in base al tipo di oggetto. Se preferisci evitare di imparare XML e come formattare sempre l’output in un modo specifico, hai anche a disposizione cmdlet come Format-List e Format-Wide. Un file PS1XML nel file system o l’utilizzo di uno qualsiasi dei cmdlet di formattazione consentirà di visualizzare l’output in modi diversi.

Senza utilizzare alcuna formattazione speciale, PowerShell, di default, utilizza il suo formato. Quando viene restituito un oggetto specifico, probabilmente vedrai solo una parte limitata dei contenuti effettivi di quell’oggetto. Ad esempio, guardando una singola cartella vedrai solo la directory principale e alcuni attributi.

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

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

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

Ma, se utilizzi lo stesso comando con il pipe a Select-Object -Property *, vedrai cosa succede.

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 ha nascosto molte proprietà dell’oggetto perché di solito non è necessario visualizzare tutte queste informazioni. PowerShell fornisce una visualizzazione predefinita, ma ciò non significa che sia l’unica opzione disponibile. Possiamo cambiare questa visualizzazione tramite un cmdlet di formato.

Il cmdlet di formattazione più popolare è Format-Table. Secondo l’aiuto di PowerShell:

Il cmdlet Format-Table formatta l’output di un comando come una tabella con le proprietà selezionate dell’oggetto in ogni colonna. Il tipo di oggetto determina il layout predefinito e le proprietà visualizzate in ogni colonna, ma è possibile utilizzare il parametro Property per selezionare le proprietà che si desidera visualizzare.

È anche possibile utilizzare una tabella hash per aggiungere proprietà calcolate a un oggetto prima di visualizzarlo e specificare gli intestazioni delle colonne nella tabella. Per aggiungere una proprietà calcolata, utilizzare il parametro Property o GroupBy.

Utilizzare il cmdlet Format-Table di Powershell e Select-Object per estrarre singole proprietà dell’oggetto sembra essere la stessa cosa finché i valori delle proprietà non superano la larghezza della console corrente. Ma non appena si cerca di visualizzare molti oggetti, si noterà che Format-Table mantiene il formato tabellare mentre Select-Object ritorna a visualizzare le proprietà su ogni riga.

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

L’output di Powershell Format-Table cercherà sempre di visualizzare le informazioni tramite un formato tabellare. Se i valori delle proprietà sono troppo lunghi per essere visualizzati, sostituirà qualsiasi testo mancante con ellissi per indicare che sono disponibili ulteriori informazioni, ma non visualizzate.

Il cmdlet Format-Table ha molteplici modi per manipolare l’output. Dai un’occhiata alla documentazione completa di Format-Table su Microsoft docs.

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