Usando comandos Formatar para alterar a exibição de saída

O PowerShell tem um conjunto de cmdlets que permitem controlar como as propriedades são exibidas para objetos específicos. Os nomes de todos os cmdlets começam com o verbo Format. Eles permitem que você selecione quais propriedades você deseja mostrar.

Get-Command -Verb Format -Module Microsoft.PowerShell.Utility
CommandType     Name               Version    Source
-----------     ----               -------    ------
Cmdlet          Format-Custom      6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Hex         6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-List        6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Table       6.1.0.0    Microsoft.PowerShell.Utility
Cmdlet          Format-Wide        6.1.0.0    Microsoft.PowerShell.Utility

Este artigo descreve o Format-Wide, Format-Liste Format-Table cmdlets.

Cada tipo de objeto no PowerShell tem propriedades padrão que são usadas quando você não seleciona as propriedades a serem exibidas. Cada cmdlet usa o mesmo parâmetro Property para especificar quais propriedades você deseja exibir. Como Format-Wide mostra apenas uma única propriedade, seu parâmetro Property usa apenas um único valor, mas os parâmetros de propriedade de Format-List e Format-Table aceitam uma lista de nomes de propriedade.

Neste exemplo, a saída padrão do Get-Process cmdlet mostra que temos duas instâncias do Internet Explorer em execução.

Get-Process -Name iexplore

O formato padrão para objetos Process exibe as propriedades mostradas aqui:

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
     32    25.52      10.25      13.11   12808   1 iexplore
     52    11.46      26.46       3.55   21748   1 iexplore

Usando todo o formato para saída de item único

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

Get-Command -Verb Format | Format-Wide
Format-Custom          Format-Hex
Format-List            Format-Table
Format-Wide

Você também pode especificar uma propriedade não padrão:

Get-Command -Verb Format | Format-Wide -Property Noun
Custom                 Hex
List                   Table
Wide

Controlando a exibição em todo o formato com coluna

Com o Format-Wide cmdlet, você só pode exibir uma única propriedade de cada vez. Isso o torna útil para exibir listas grandes em várias colunas.

Get-Command -Verb Format | Format-Wide -Property Noun -Column 3
Custom                 Hex                  List
Table                  Wide

Usando Format-List para um modo de exibição de lista

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

Get-Process -Name iexplore | Format-List
Id      : 12808
Handles : 578
CPU     : 13.140625
SI      : 1
Name    : iexplore

Id      : 21748
Handles : 641
CPU     : 3.59375
SI      : 1
Name    : iexplore

Você pode especificar quantas propriedades quiser:

Get-Process -Name iexplore | Format-List -Property ProcessName,FileVersion,StartTime,Id
ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime   : 10/22/2019 11:23:58 AM
Id          : 12808

ProcessName : iexplore
FileVersion : 11.00.18362.1 (WinBuild.160101.0800)
StartTime   : 10/22/2019 11:23:57 AM
Id          : 21748

Obtendo informações detalhadas usando Format-List com curingas

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

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

Embora o Format-List comando seja útil para mostrar detalhes, se você quiser uma visão geral da saída que inclua muitos itens, uma exibição tabular mais simples geralmente é mais útil.

Usando Format-Table para saída tabular

Se você usar o Format-Table cmdlet sem nomes de propriedade especificados para formatar a Get-Process saída do comando, obterá exatamente a mesma saída que obtém sem um Format cmdlet. Por padrão, o PowerShell exibe objetos Process em um formato tabular.

Get-Service -Name win* | Format-Table
Status   Name               DisplayName
------   ----               -----------
Running  WinDefend          Windows Defender Antivirus Service
Running  WinHttpAutoProx... WinHTTP Web Proxy Auto-Discovery Se...
Running  Winmgmt            Windows Management Instrumentation
Running  WinRM              Windows Remote Management (WS-Manag...

Nota

Get-Service só está disponível em plataformas Windows.

Melhorando a saída da tabela de formato

Embora uma exibição tabular seja útil para exibir muitas informações, pode ser difícil interpretar se a exibição for muito estreita para os dados. No exemplo anterior, a saída é truncada. Se você especificar o parâmetro AutoSize ao executar o comando, o Format-Table PowerShell calculará as larguras das colunas com base nos dados reais exibidos. Isso torna as colunas legíveis.

Get-Service -Name win* | Format-Table -AutoSize
Status  Name                DisplayName
------  ----                -----------
Running WinDefend           Windows Defender Antivirus Service
Running WinHttpAutoProxySvc WinHTTP Web Proxy Auto-Discovery Service
Running Winmgmt             Windows Management Instrumentation
Running WinRM               Windows Remote Management (WS-Management)

O Format-Table cmdlet ainda pode truncar dados, mas só trunca no final da tela. As propriedades, diferentes da última exibida, recebem o tamanho necessário para que seu elemento de dados mais longo seja exibido corretamente.

Get-Service -Name win* |
    Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -AutoSize
Name                 Status StartType DisplayName                               DependentServi
                                                                                ces
----                 ------ --------- -----------                               --------------
WinDefend           Running Automatic Windows Defender Antivirus Service        {}
WinHttpAutoProxySvc Running    Manual WinHTTP Web Proxy Auto-Discovery Service  {NcaSvc, iphl…
Winmgmt             Running Automatic Windows Management Instrumentation        {vmms, TPHKLO…
WinRM               Running Automatic Windows Remote Management (WS-Management) {}

O Format-Table comando assume que as propriedades são listadas em ordem de importância. O cmdlet tenta exibir totalmente as propriedades mais próximas do início. Se o Format-Table comando não puder exibir todas as propriedades, ele removerá algumas colunas da exibição. Você pode ver esse comportamento no exemplo anterior da propriedade DependentServices .

Quebrando saída de tabela de formato em colunas

Você pode forçar dados longos Format-Table a serem encapsulados em sua coluna de exibição usando o parâmetro Wrap . Usar o parâmetro Wrap pode não fazer o esperado, já que ele usa as configurações padrão se você também não especificar AutoSize:

Get-Service -Name win* |
    Format-Table -Property Name, Status, StartType, DisplayName, DependentServices -Wrap
Name                 Status StartType DisplayName                               DependentServi
                                                                                ces
----                 ------ --------- -----------                               --------------
WinDefend           Running Automatic Windows Defender Antivirus Service        {}
WinHttpAutoProxySvc Running    Manual WinHTTP Web Proxy Auto-Discovery Service  {NcaSvc,
                                                                                iphlpsvc}
Winmgmt             Running Automatic Windows Management Instrumentation        {vmms,
                                                                                TPHKLOAD,
                                                                                SUService,
                                                                                smstsmgr…}
WinRM               Running Automatic Windows Remote Management (WS-Management) {}

Usar o parâmetro Wrap por si só não torna o processamento muito lento. No entanto, usar AutoSize para formatar uma listagem de arquivo recursivo de uma estrutura de diretório grande pode levar muito tempo e usar muita memória antes de exibir os primeiros itens de saída.

Se você não estiver preocupado com a carga do sistema, o AutoSize funciona bem com o parâmetro Wrap . As colunas iniciais ainda usam a largura necessária para exibir itens em uma linha, mas a coluna final é quebrada, se necessário.

Nota

Algumas colunas podem não ser exibidas quando você especifica as colunas mais largas primeiro. Para obter melhores resultados, especifique primeiro os menores elementos de dados.

No exemplo a seguir, especificamos primeiro as propriedades mais amplas.

Get-Process -Name iexplore |
    Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id

Mesmo com o embrulho, a coluna Id final é omitida:

FileVersion                          Path                                                  Nam
                                                                                           e
-----------                          ----                                                  ---
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE iex
                                                                                           plo
                                                                                           re
11.00.18362.1 (WinBuild.160101.0800) C:\Program Files\Internet Explorer\iexplore.exe       iex
                                                                                           plo
                                                                                           re

Organizando a saída da tabela

Outro parâmetro útil para controle de saída tabular é GroupBy. Listas tabulares mais longas, em particular, podem ser difíceis de comparar. A saída dos grupos de parâmetros GroupBy é baseada em um valor de propriedade. Por exemplo, podemos agrupar serviços por StartType para facilitar a inspeção, omitindo o valor StartType da listagem de propriedades:

Get-Service -Name win* | Sort-Object StartType | Format-Table -GroupBy StartType
   StartType: Automatic
Status   Name               DisplayName
------   ----               -----------
Running  WinDefend          Windows Defender Antivirus Service
Running  Winmgmt            Windows Management Instrumentation
Running  WinRM              Windows Remote Management (WS-Managem…

   StartType: Manual
Status   Name               DisplayName
------   ----               -----------
Running  WinHttpAutoProxyS… WinHTTP Web Proxy Auto-Discovery Serv…