O Windows PowerShell possui um conjunto de cmdlets que permitem que você controle quais propriedades serão exibidas para objetos específicos. Os nomes de todos os cmdlets começam pelo verbo Format. Eles permitem que você selecione uma ou mais propriedades para exibição.

Os cmdlets Format são Format-Wide, Format-List, Format-Table e Format-Custom. Descreveremos somente os cmdlets Format-Wide, Format-List e Format-Table neste guia do usuário.

Cada cmdlet de formatação possui propriedades padrão que serão usadas caso você especifique as propriedades que devem ser exibidas. Cada cmdlet também usa o mesmo nome de parâmetro, Property, para especificar quais propriedades você deseja exibir. Como Format-Wide mostra apenas uma única propriedade, seu parâmetro Property só aceita um único valor, mas os parâmetros de propriedade de Format-List e Format-Table aceitarão uma lista de nomes de propriedades.

Se você usar o comando Get-Process -Name powershell com duas instâncias do Windows PowerShell em execução, obterá uma saída parecida com esta:

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

No restante desta seção, vamos explorar o uso de cmdlets Format para alterar a maneira como a saída desse comando é exibida.

Usando Format-Wide na saída de um único item

Por padrão, o cmdlet Format-Wide exibe somente a propriedade padrão de um objeto. As informações associadas a cada objeto são exibidas em uma única coluna:

PS> Get-Process -Name powershell | Format-Wide

powershell                              powershell

É possível também especificar uma propriedade que não seja padrão:

PS> Get-Process -Name powershell | Format-Wide -Property Id

2760                                    3448

Controlando a exibição Format-Wide com colunas

Com o cmdlet Format-Wide, só é possível exibir uma única propriedade de cada vez. Isso o torna útil para a exibição de listas simples que mostra somente um elemento por linha. Para obter uma listagem simples, defina o valor do parâmetro Column como 1, digitando:

Get-Command Format-Wide -Property Name -Column 1

Usando Format-List na exibição de uma lista

O cmdlet Format-List exibe um objeto na forma de listagem, e cada propriedade é rotulada e exibida em uma linha separada:

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

Você pode especificar quantas propriedades desejar:

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

Obtendo informações detalhadas com o uso de Format-List com caracteres curinga

O cmdlet Format-List permite que você use um caractere curinga como valor do seu parâmetro Property. Assim, é possível exibir informações detalhadas. Quase sempre os objetos incluem mais informações do que o necessário, e é por isso que o Windows PowerShell por padrão não mostra todos os valores de propriedade. Para mostrar todas as propriedades de um objeto, use o comando Format-List -Property * . O comando a seguir gera mais de 60 linhas de saída para um único processo:

Get-Process -Name powershell | Format-List -Property *

O comando Format-List é útil para a exibição de detalhes, mas se você quiser ter uma visão geral da saída que inclua muitos itens, uma exibição tabular mais simples será quase sempre mais útil.

Usando Format-Table para saída tabular

Se você usar o cmdlet Format-Table sem nomes de propriedades especificados para a formatação da saída do comando Get-Process , obterá exatamente a mesma saída que teria sem qualquer formatação. Isso acontece porque os processos são normalmente exibidos em um formato tabular, como a maioria dos objetos do Windows PowerShell.

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

Melhorando a saída de Format-Table (AutoSize)

Embora uma exibição tabular seja útil para a exibição de uma grande quantidade de informações comparáveis, ela pode ser difícil de interpretar caso a tela seja muito estreita para os dados. Por exemplo, se você tentar exibir o caminho do processo, ID, nome e empresa, obterá uma saída truncada do caminho do processo e da coluna da empresa:

PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company

Path                Name                                 Id Company
----                ----                                 -- -------
C:\Program Files... powershell                         2836 Microsoft Corpor...

Caso o parâmetro AutoSize seja especificado na execução do comando Format-Table, o Windows PowerShell calculará as larguras das colunas com base nos dados reais que serão exibidos. Isso tornará a coluna Path legível, mas a coluna da empresa permanecerá truncada:

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...

O cmdlet Format-Table ainda pode truncar os dados, mas só fará isso no fim da tela. As propriedades, ao contrário da exibição anterior, têm muito mais espaço do que precisam para que o seu elemento de dados mais longo seja exibido corretamente. Você pode observar que o nome da empresa é visível, mas que o caminho está truncado caso troque a posição de Path e Company na lista de valores de Property:

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...

O comando Format-Table pressupõe que, quanto mais próxima uma propriedade está do início da lista de propriedades, mais importante ela será. Então, ele tenta exibir completamente as propriedades mais próximas do início. Se o comando Format-Table não puder exibir todas as propriedades, ele removerá algumas colunas da exibição e mostrará um aviso. Esse comportamento poderá ser observado caso você coloque Name como a última propriedade da lista:

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

Na saída anterior, a coluna ID foi truncada para caber na lista e os cabeçalhos das colunas foram empilhados. O redimensionamento automático das colunas nem sempre faz o que você quer.

Dispondo a saída de Format-Table em colunas (Wrap)

Você pode forçar a disposição de dados mais longos de Format-Table em colunas usando o parâmetro Wrap. O uso do parâmetro Wrap sozinho não produzirá necessariamente o resultado esperado, uma vez que ele utiliza configurações padrão se você não especifica também AutoSize:

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 

Uma vantagem do uso do parâmetro Wrap isolado é que ele não retarda muito o processamento. Se você executar uma listagem recursiva de arquivos de um grande sistema de diretórios, talvez ele leve muito tempo e consuma muita memória para exibir os primeiros itens de saída com o uso de AutoSize.

Se a carga do sistema não for um problema, AutoSize funcionará bem com o parâmetro Wrap. As colunas iniciais sempre terão toda a largura necessária para exibir itens em uma linha, exatamente como quando você especifica AutoSize sem o parâmetro Wrap. A única diferença é que a coluna final será ajustada, se necessário:

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

Algumas colunas podem não ser exibidas caso você especifique a coluna mais larga primeiro, portanto é melhor especificar os elementos com os dados menores antes. No exemplo a seguir, especificamos o elemento com um caminho extremamente largo primeiro e, mesmo com a disposição, ainda perderemos a coluna Name final:

 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

Organizando a saída de tabela (-GroupBy)

Outro parâmetro útil para o controle da saída tabular é GroupBy. As listas tabulares mais longas podem ser particularmente difíceis de comparar. O parâmetro GroupBy agrupa a saída com base em um valor de propriedade. Por exemplo, podemos agrupar processos por empresa para tornar o exame mais fácil, omitindo o valor company da lista de propriedades:

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




Sumário