Formatar-Tabela do PowerShell: Organizar Saída em Colunas

PowerShell segura a mão do desenvolvedor em muitos aspectos, mas não consegue ler sua mente. Não pode saber inerentemente que tipo de saída você está procurando. Ele fornecerá sua melhor suposição por meio de um formato padrão, mas cabe a você decidir como deseja que a saída seja apresentada. Usando o cmdlet Format-Table do PowerShell, você pode ajustar a saída conforme sua preferência.

O PowerShell possui um sistema de formatação que tem saída padrão e a capacidade de alterar como a saída é formatada com base no tipo de objeto. Se preferir não aprender sobre XML e como sempre formatar a saída de uma maneira específica, você também tem cmdlets como Format-Table do Powershell, Format-List e Format-Wide à sua disposição. Um arquivo PS1XML no sistema de arquivos ou o uso de qualquer um dos cmdlets de formatação exibirá a saída de maneiras diferentes.

Sem usar formatação especial, o PowerShell, por padrão, usa seu formato. Sempre que um objeto específico é retornado, você provavelmente verá apenas uma parte limitada do conteúdo real desse objeto. Por exemplo, ao examinar uma única pasta, você verá apenas o diretório pai e alguns atributos.

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

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

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

Mas, encaminhe esse mesmo comando para Select-Object -Property * e veja o que acontece.

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

O PowerShell oculta muitas propriedades do objeto de você, pois geralmente você não precisa ver todas essas informações. O PowerShell fornece uma visualização padrão, mas isso não significa que essa seja sua única opção. Podemos alterar essa visualização por meio de um cmdlet de formatação.

O cmdlet de formatação mais popular é Format-Table. De acordo com a ajuda do PowerShell:

O cmdlet Format-Table formata a saída de um comando como uma tabela com as propriedades selecionadas do objeto em cada coluna. O tipo de objeto determina o layout padrão e as propriedades que são exibidas em cada coluna, mas você pode usar o parâmetro Property para selecionar as propriedades que deseja ver.

Você também pode usar uma tabela de hash para adicionar propriedades calculadas a um objeto antes de exibi-lo e para especificar os cabeçalhos de coluna na tabela. Para adicionar uma propriedade calculada, use o parâmetro Property ou GroupBy.

O uso do Format-Table do Powershell e Select-Object para selecionar propriedades individuais do objeto parece ser o mesmo, desde que os valores das propriedades não ultrapassem a largura atual do console. Mas assim que você tentar exibir muitos objetos, verá que Format-Table mantém o formato tabular enquanto Select-Object volta a exibir as propriedades em cada linha.

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

A saída do Format-Table do Powershell sempre tentará exibir informações por meio de um formato tabular. Se os valores das propriedades forem muito longos para serem exibidos, ele substituirá qualquer texto ausente por reticências para indicar que mais informações estão disponíveis, mas não são mostradas.

O cmdlet Format-Table tem muitas maneiras diferentes de manipular a saída. Confira a documentação completa do Format-Table via Microsoft docs.

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