Format-Table
Formata a saída como uma tabela.
Sintaxe
Format-Table
[[-Property] <Object[]>]
[-AutoSize]
[-RepeatHeader]
[-HideTableHeaders]
[-Wrap]
[-GroupBy <Object>]
[-View <string>]
[-ShowError]
[-DisplayError]
[-Force]
[-Expand <string>]
[-InputObject <psobject>]
[<CommonParameters>]
Description
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. Você pode usar o parâmetro Property para selecionar as propriedades que deseja exibir.
O PowerShell usa formatters padrão para definir como os tipos de objeto são exibidos. Você pode usar arquivos .ps1xml
para criar exibições personalizadas que exibem uma tabela de saída com propriedades especificadas. Depois que um modo de exibição personalizado for criado, use o parâmetro View para exibir a tabela com seu modo de exibição personalizado. Para obter mais informações sobre modos de exibição, consulte about_Format.ps1xml.
Você 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. Para obter mais informações sobre tabelas de hash, consulte about_Hash_Tables.
Exemplos
Exemplo 1: Formatar host do PowerShell
Este exemplo exibe informações sobre o programa host do PowerShell em uma tabela.
Get-Host | Format-Table -AutoSize
O cmdlet Get-Host
obtém System.Management.Automation.Internal.Internal.Host.InternalHost objetos que representam o host. Os objetos são enviados pelo pipeline para Format-Table
e exibidos em uma tabela. O parâmetro AutoSize ajusta as larguras das colunas para minimizar o truncamento.
Exemplo 2: Formatar processos por BasePriority
Neste exemplo, os processos são exibidos em grupos que têm a mesma propriedade BasePriority.
Get-Process | Sort-Object -Property BasePriority |
Format-Table -GroupBy BasePriority -Wrap
O cmdlet Get-Process
obtém objetos que representam cada processo no computador e os envia pelo pipeline para Sort-Object
. Os objetos são classificados na ordem de suas propriedade BasePriority.
Os objetos classificados são enviados pelo pipeline para Format-Table
. O parâmetro GroupBy organiza os dados do processo em grupos com base no valor da propriedade BasePriority. O parâmetro Wrap garante que os dados não sejam truncados.
Exemplo 3: Formatar processos por data de início
Este exemplo exibe informações sobre os processos em execução no computador. Os objetos são classificados e Format-Table
usa um modo de exibição para agrupar os objetos por sua data de início.
Get-Process | Sort-Object StartTime | Format-Table -View StartTime
Get-Process
obtém o System.Diagnostics.Process objetos que representam os processos em execução no computador. Os objetos são enviados pelo pipeline para Sort-Object
e são classificados com base na propriedade StartTime.
Os objetos classificados são enviados pelo pipeline para Format-Table
. O parâmetro View especifica a exibição StartTime definida no arquivo de DotNetTypes.format.ps1xml
do PowerShell para objetos System.Diagnostics.Process. A visualização StartTime converte a hora de início de cada processo em uma data curta e, em seguida, agrupa os processos pela data de início.
O arquivo DotNetTypes.format.ps1xml
contém uma exibição de de prioridade para processos. Pode criar os seus próprios ficheiros format.ps1xml
com vistas personalizadas.
Exemplo 4: Usar um modo de exibição personalizado para a saída da tabela
Neste exemplo, um modo de exibição personalizado exibe o conteúdo de um diretório. O modo de exibição personalizado adiciona a coluna CreationTime à saída da tabela para System.IO.DirectoryInfo e objetos de System.IO.FileInfo criados por Get-ChildItem
.
O modo de exibição personalizado neste exemplo foi criado a partir do modo de exibição definido no código-fonte do PowerShell. Para obter mais informações sobre modos de exibição e o código usado para criar o modo de exibição deste exemplo, consulte about_Format.ps1xml.
Get-ChildItem -Path C:\Test | Format-Table -View mygciview
Directory: C:\Test
Mode LastWriteTime CreationTime Length Name
---- ------------- ------------ ------ ----
d----- 11/4/2019 15:54 9/24/2019 15:54 Archives
d----- 8/27/2019 14:22 8/27/2019 14:22 Drawings
d----- 10/23/2019 09:38 2/25/2019 09:38 Files
-a---- 11/7/2019 11:07 11/7/2019 11:07 11345 Alias.txt
-a---- 2/27/2019 15:15 2/27/2019 15:15 258 alias_out.txt
-a---- 2/27/2019 15:16 2/27/2019 15:16 258 alias_out2.txt
Get-ChildItem
obtém o conteúdo do diretório atual, C:\Test
. Os objetos System.IO.DirectoryInfo e System.IO.FileInfo são enviados pelo pipeline.
Format-Table
usa o parâmetro View para especificar o modo de exibição personalizado mygciview que inclui a coluna CreationTime.
A saída de Format-Table
padrão para Get-ChildItem
não inclui a coluna CreationTime.
Exemplo 5: Usar propriedades para saída de tabela
Este exemplo usa o parâmetro Property para exibir todos os serviços do computador em uma tabela de duas colunas que mostra as propriedades Name e DependentServices.
Get-Service | Format-Table -Property Name, DependentServices
Get-Service
obtém todos os serviços no computador e envia o System.ServiceProcess.ServiceController objetos no pipeline.
Format-Table
usa o parâmetro Property para especificar que as propriedades Name e DependentServices sejam exibidas na tabela.
Name e DependentServices são duas das propriedades do tipo de objeto. Para visualizar todas as propriedades: Get-Service | Get-Member -MemberType Properties
Exemplo 6: Formatar um processo e calcular seu tempo de execução
Este exemplo exibe uma tabela com o nome do processo e o tempo total de execução dos processos do bloco de notas do computador local. O tempo total de execução é calculado subtraindo a hora de início de cada processo da hora atual.
Get-Process notepad |
Format-Table ProcessName, @{
Label = "TotalRunningTime"
Expression = {(Get-Date) - $_.StartTime}
}
ProcessName TotalRunningTime
----------- ----------------
notepad 03:20:00.2751767
notepad 00:00:16.7710520
Get-Process
obtém todos os processos de do bloco de notas do computador local e envia os objetos pelo pipeline.
Format-Table
exibe uma tabela com duas colunas: ProcessName, uma propriedade Get-Process
e TotalRunningTime, uma propriedade calculada.
A propriedade TotalRunningTime é especificada por uma tabela de hash com duas chaves, Label e Expression. A chave Label especifica o nome da propriedade. A chave Expression especifica o cálculo. A expressão obtém a propriedade StartTime de cada objeto de processo e a subtrai do resultado de um comando Get-Date
, que obtém a data e hora atuais.
Exemplo 7: Formatar processos do Bloco de Notas
Este exemplo usa Get-CimInstance
para obter o tempo de execução de todos os processos de do bloco de notas no computador local. Você pode usar Get-CimInstance
com o parâmetro ComputerName para obter informações de computadores remotos.
$Processes = Get-CimInstance -Class win32_process -Filter "name='notepad.exe'"
$Processes | Format-Table ProcessName, @{
Label = "Total Running Time"
Expression = {(Get-Date) - $_.CreationDate}
}
ProcessName Total Running Time
----------- ------------------
notepad.exe 03:39:39.6260693
notepad.exe 00:19:56.1376922
Get-CimInstance
obtém instâncias da classe WMI Win32_Process que descreve todos os processos do computador local chamados notepad.exe. Os objetos de processo são armazenados na variável $Processes
.
Os objetos de processo na variável $Processes
são enviados pelo pipeline para Format-Table
, que exibe a propriedade ProcessName e uma nova propriedade calculada, Total Running Time.
O comando atribui o nome da nova propriedade calculada, Tempo Total de Execução, à chave Rótulo. O bloco de script da chave Expression calcula há quanto tempo o processo está sendo executado, subtraindo a data de criação dos processos da data atual. O cmdlet Get-Date
obtém a data atual. A data de criação é subtraída da data atual. O resultado é o valor de Tempo Total de Execução.
Exemplo 8: Solução de problemas de erros de formato
Os exemplos a seguir mostram os resultados da adição dos parâmetros DisplayError ou ShowError com uma expressão.
Get-Date | Format-Table DayOfWeek, { $_ / $null } -DisplayError
DayOfWeek $_ / $null
--------- ------------
Wednesday #ERR
Get-Date | Format-Table DayOfWeek, { $_ / $null } -ShowError
DayOfWeek $_ / $null
--------- ------------
Wednesday
InvalidArgument: Failed to evaluate expression " $_ / $null ".
Parâmetros
-AutoSize
Indica que o cmdlet ajusta o tamanho e o número de colunas com base na largura dos dados. Por padrão, o tamanho e o número da coluna são determinados pelo modo de exibição.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-DisplayError
Indica que o cmdlet exibe erros na linha de comando. Esse parâmetro pode ser usado como um auxílio de depuração quando você estiver formatando expressões em um comando Format-Table
e precisar solucionar problemas das expressões.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Expand
Especifica o formato do objeto de coleção e os objetos na coleção. Este parâmetro foi projetado para formatar objetos que suportam o ICollection(System.Collections) interface. O valor padrão é EnumOnly. Os valores aceitáveis para este parâmetro são os seguintes:
- EnumOnly: Exibe as propriedades dos objetos na coleção.
- CoreOnly: Exibe as propriedades do objeto de coleção.
- Ambos os: Exibe as propriedades do objeto de coleção e as propriedades dos objetos na coleção.
Tipo: | String |
Valores aceites: | CoreOnly, EnumOnly, Both |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Force
Indica que o cmdlet direciona o cmdlet para exibir todas as informações de erro. Use com o DisplayError ou ShowError parâmetro. Por padrão, quando um objeto de erro é gravado nos fluxos de erro ou exibição, apenas algumas informações de erro são exibidas.
Também necessário ao formatar determinados tipos .NET. Para obter mais informações, consulte a seção Notas.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-GroupBy
Especifica a saída classificada em tabelas separadas com base em um valor de propriedade. Por exemplo, você pode usar GroupBy para listar serviços em tabelas separadas com base em seu status.
Insira uma expressão ou uma propriedade. O parâmetro GroupBy espera que os objetos sejam classificados.
Use o cmdlet Sort-Object
antes de usáFormat-Table
para agrupar os objetos.
O valor do parâmetro GroupBy pode ser uma nova propriedade calculada. A propriedade calculada pode ser um bloco de script ou uma tabela de hash. Os pares chave-valor válidos são:
- Nome (ou rótulo) -
<string>
- Expressão -
<string>
ou<script block>
- FormatString -
<string>
Para obter mais informações, consulte about_Calculated_Properties.
Tipo: | Object |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-HideTableHeaders
Omite os cabeçalhos de coluna da tabela.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-InputObject
Especifica os objetos a serem formatados. Insira uma variável que contenha os objetos ou digite um comando ou expressão que obtenha os objetos.
Tipo: | PSObject |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-Property
Especifica as propriedades do objeto que aparecem na exibição e a ordem em que aparecem. Digite um ou mais nomes de propriedade, separados por vírgulas, ou use uma tabela de hash para exibir uma propriedade calculada. Curingas são permitidos.
Se você omitir esse parâmetro, as propriedades que aparecem na exibição dependerão das propriedades do primeiro objeto. Por exemplo, se o primeiro objeto tiver PropertyA e PropertyB, mas os objetos subsequentes tiverem PropertyA, PropertyBe PropertyC, somente os cabeçalhos PropertyA e PropertyB serão exibidos.
O parâmetro Property é opcional. Não é possível usar o de propriedade e parâmetros View no mesmo comando.
O valor do parâmetro Property pode ser uma nova propriedade calculada. A propriedade calculada pode ser um bloco de script ou uma tabela de hash. Os pares chave-valor válidos são:
- Nome (ou rótulo)
<string>
- Expressão -
<string>
ou<script block>
- FormatString -
<string>
- Largura -
<int32>
- deve ser maior que0
- Alinhamento - o valor pode ser
Left
,Center
ouRight
Para obter mais informações, consulte about_Calculated_Properties.
Tipo: | Object[] |
Position: | 0 |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | True |
-RepeatHeader
Repete a exibição do cabeçalho de uma tabela após cada tela cheia. O cabeçalho repetido é útil quando a saída é canalizada para um pager, como less
ou more
ou paginação com um leitor de tela.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-ShowError
Este parâmetro envia erros através do pipeline. Esse parâmetro pode ser usado como um auxílio de depuração quando você estiver formatando expressões em um comando Format-Table
e precisar solucionar problemas das expressões.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-View
A partir do PowerShell 6, as exibições padrão são definidas no PowerShell C#
código-fonte. Os arquivos *.format.ps1xml
do PowerShell 5.1 e versões anteriores não existem no PowerShell 6 e versões posteriores.
O parâmetro View permite especificar um formato alternativo ou um modo de exibição personalizado para a tabela. Você pode usar os modos de exibição padrão do PowerShell ou criar modos de exibição personalizados. Para obter mais informações sobre como criar um modo de exibição personalizado, consulte about_Format.ps1xml.
As exibições alternativas e personalizadas para o parâmetro View devem usar o formato de tabela, caso contrário, Format-Table
falhará. Se o modo de exibição alternativo for uma lista, use o cmdlet Format-List
. Se o modo de exibição alternativo não for uma lista ou uma tabela, use o cmdlet Format-Custom
.
Não é possível usar o de propriedade e parâmetros View no mesmo comando.
Tipo: | String |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Wrap
Exibe texto que excede a largura da coluna na próxima linha. Por padrão, o texto que excede a largura da coluna é truncado.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
Entradas
Você pode canalizar qualquer objeto para este cmdlet.
Saídas
Microsoft.PowerShell.Commands.Internal.Format
Este cmdlet retorna objetos de formato que representam a tabela.
Notas
O PowerShell inclui os seguintes aliases para Format-Table
:
- Todas as plataformas:
ft
O PowerShell 7.2 introduziu novos recursos para colorir a saída. As cores podem ser gerenciadas usando a variável automática $PSStyle
. A propriedade $PSStyle.Formatting.TableHeader
define a cor usada para o cabeçalho da tabela exibida por Format-Table
. Para obter mais informações sobre essa configuração, consulte about_ANSI_Terminals.
Se você quiser usar Format-Table
com o parâmetro Property, precisará incluir o parâmetro Force em qualquer uma das seguintes condições:
Os objetos de entrada são normalmente formatados fora de banda usando o método
ToString()
. Isso se aplica aos tipos primitivos[string]
e .NET, que são um superconjunto dos tipos numéricos internos, como[int]
,[long]
e outros.Os objetos de entrada não têm propriedades públicas.
Os objetos de entrada são instâncias dos tipos de wrapper que o PowerShell usa para fluxos de saída diferentes do fluxo de saída Success. Isso se aplica somente quando esses tipos de wrapper são enviados para o fluxo de saída Success que requer tê-los capturado por meio de parâmetros comuns, como ErrorVariable primeiro ou usando um redirecionamento, como
*>&1
.