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-List
e 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…