Não deixe de ler os artigos anteriores da série:
- Aprenda a automatizar o Windows com o PowerShell
- Aprendendo a usar cmdlets no PowerShell
- Aprendendo a usar objetos no PowerShell
E fique ligado para o resto da série durante toda a semana.
Formatação Padrão
Quando comecei a usar o PowerShell, achei que tudo era mágico, mas a verdade é que leva um pouco de tempo para entender o que está acontecendo sob o capô. O mesmo é verdadeiro para o sistema de formatação do PowerShell. Na verdade, se você executar o cmdlet Get-Service, a saída gerada mostrará apenas três propriedades: Status, Nome e DisplayName.
notepad C:WindowsSystem32WindowsPowerShellv1.0DotNetTypes.format.ps1xml
Se usarmos a função Localizar do bloco de notas, poderemos pular rapidamente para a seção que detalha a saída do cmdlet Get-Service procurando o tipo ServiceController.
Formatando seus dados
Se você não estiver satisfeito com a formatação padrão de um objeto ou tipo, poderá rolar sua própria formatação. Existem três cmdlets que você precisa saber para fazer isso.
- Format-List
- Format-Table
- Formato amplo
Formato amplo simplesmente pega uma coleção de objetos e exibe uma única propriedade de cada objeto. Por padrão, ele procurará uma propriedade de nome; Se os seus objetos não contiverem uma propriedade de nome, ela usará a primeira propriedade do objeto, uma vez que as propriedades foram classificadas alfabeticamente.
Get-Service | Format-Wide
Get-Service | Format-Wide -Property DisplayName -Column 6
Essa visão tabular realmente combina com esse tipo de informação muito bem, mas vamos fingir que queremos vê-lo em forma de lista. Tudo o que realmente precisamos fazer é canalizá-lo para Format-List.
Get-Process | Format-List
Get-Process | Format-List –Property *
Get-Process | Format-List –Property name,id
Format-Table, por outro lado, pega dados e os transforma em uma tabela. Como nossos dados do Get-Process já estão na forma de uma tabela, podemos usá-los para escolher facilmente as propriedades que queremos exibir na tabela. Eu usei o parâmetro AutoSize para fazer todos os dados se encaixarem em uma única tela.
Get-Process | Format-Table name,id –AutoSize
Filtrando e Comparando
Uma das melhores coisas sobre como usar um pipeline baseado em objeto é que você pode filtrar objetos fora do pipeline em qualquer estágio usando o cmdlet Where-Object.
Get-Service | Where-Object {$_.Status -eq “Running”}
- eq (igual a)
- neq (não igual a)
- gt (maior que)
- ge (maior que ou igual a)
- lt (menos que)
- le (menor que ou igual a)
- como (jogo de cadeia curinga)
Uma lista completa e mais informações podem ser visualizadas no arquivo de ajuda conceitual about_comparison, no entanto, leva algum tempo para se acostumar com a sintaxe Where-Obeject. Isso é tudo por este tempo!