Usar comandos Format para alterar a exibição dos resultados
O PowerShell tem um conjunto de cmdlets que permite 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 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 os cmdlets Format-Wide
, Format-List
e Format-Table
.
Cada tipo de objeto no PowerShell tem propriedades padrão que são usadas quando você não seleciona quais propriedades devem ser exibidas. Cada cmdlet usa o mesmo parâmetro Property para especificar quais propriedades você deseja exibir. Como Format-Wide
mostra uma única propriedade, seu parâmetro Property tem 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 cmdlet Get-Process
mostra que há 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
Usar Format-Wide para saída de um único item
O cmdlet Format-Wide
, 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
Controlar a exibição Format-Wide com coluna
Com o cmdlet Format-Wide
, só é possível 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
Usar Format-List para uma exibição de lista
O cmdlet Format-List
exibe um objeto em 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
Obter informações detalhadas usando Format-List com curingas
O cmdlet Format-List
permite usar um caractere curinga como o valor do parâmetro Property. Isso permite exibir informações detalhadas. Geralmente, os objetos incluem mais informações do que você precisa, por isso, o PowerShell não mostra todos os valores de propriedade por padrão. Para mostrar todas as propriedades de um objeto, use o comando Format-List -Property *
. O seguinte comando gera mais de 60 linhas de saída para um único processo:
Get-Process -Name iexplore | Format-List -Property *
Embora o comando Format-List
seja útil para mostrar os detalhes, se você quiser obter uma visão geral de saída que inclui vários itens, uma exibição de tabela simples geralmente será mais útil.
Usar Format-Table para saída em tabela
Caso você use o cmdlet Format-Table
sem nenhum nome de propriedade especificado para formatar a saída do comando Get-Process
, obterá exatamente a mesma saída que receberia sem um cmdlet Format
. 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...
Observação
Get-Service
está disponível apenas em plataformas Windows.
Melhorar a saída do Format-Table
Embora uma exibição tabular seja útil para exibir muitas informações, ela poderá ser difícil de interpretar se a exibição for muito estreita para os dados. No exemplo anterior, a saída está truncada. Se você especificar o parâmetro AutoSize ao executar o comando Format-Table
, o 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 cmdlet Format-Table
ainda pode truncar os dados, mas trunca apenas no final da tela.
Propriedades, além da última exibida, recebem o tamanho correspondente ao que precisam para seu elemento de dados mais longo ser 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 comando Format-Table
assume que as propriedades são listadas em ordem de importância. O cmdlet 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. Você pode ver esse comportamento na propriedade DependentServices do exemplo anterior.
Quebra automática de linha na saída de Format-Table em colunas
Você pode forçar dados Format-Table
longos a serem encapsulados em sua coluna de exibição usando o parâmetro Wrap. Usar o parâmetro Wrap pode não fazer o que você espera, já que ele usará as configurações padrão se você 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 deixa o processamento muito mais lento. No entanto, usar AutoSize para formatar uma lista de arquivos recursivos 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, AutoSize funcionará 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, caso necessário.
Observação
Algumas colunas podem não ser exibidas quando você especifica as colunas mais largas primeiro. Para obter melhores resultados, especifique os elementos de dados menores primeiro.
No exemplo a seguir, especificamos as propriedades mais amplas primeiro.
Get-Process -Name iexplore |
Format-Table -Wrap -AutoSize -Property FileVersion, Path, Name, Id
Mesmo com a quebrar de linha, 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
Organizar a saída da tabela
Outro parâmetro útil para controlar a saída tabular é GroupBy. Listagens de tabela mais longas podem ser especialmente difíceis de comparar. O parâmetro GroupBy agrupa a saída com base em um valor da propriedade. Por exemplo, podemos agrupar serviços por StartType para uma inspeção mais fácil, 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…