Windows PowerShell: As várias opções de saída

Há mais maneiras de gerar saída usando o Windows PowerShell do que você pode imaginar. Aqui estão algumas que surgiram recentemente.

Don Jones

O Windows PowerShell é um desses produtos claro onde eu estou descobrindo constantemente os novos recursos e capacidades. Gerando saída — a obtenção de informações na tela ou em algum outro formato — é uma área em que o Windows PowerShell mostra notável profundidade e a versatilidade.

Abra uma cópia do Windows PowerShell (preferencialmente v2, disponível para download para versões do Windows para o Windows XP) e execute Gcm –verb check-out. Você verá uma lista de todos os cmdlets projetado para criar uma saída de várias formas.

Como ocorre a saída

Como tudo no Windows PowerShell, os cmdlets de saída de vários são projetados para consumir objetos. Isso significa que você exibir a saída na tela — chamados de janela do host — ao executar um comando como este:

Get-Process | Out-Host

Na verdade, a parte de Out-Host do que é desnecessária, pois o Windows PowerShell tem a Out-Default codificado do cmdlet no final do pipeline. Esse cmdlet simplesmente encaminha as coisas para Out-Host. Portanto, este comando:

Get-Process

A função é igual a:

Get-Process | Out-Default

Out-Default serão objetos de direta internamente para Out-Host. O que há de interessante a respeito de todos os cmdlets out é que eles realmente não é possível processar objetos “ reais ”. Os cmdlets de saída pode manipular apenas um tipo especial de objeto formatação produzido pelo subsistema de formatação do shell.

Quando um cmdlet de saída recebe objetos “ normais ”, ele chama internamente um dos cmdlets do formato com base em um conjunto de regras internas e os padrões de configuração. Cmdlet Format produz os objetos de formatação que descrevem como construir a saída e o cmdlet out coloca essa saída para o dispositivo especificado. Portanto, com isso:

Get-Process

É realmente muito como executar isso:

Get-Process | Format-Table | Out-Host

A lição aqui é que os cmdlets de saída só pode usar o que é produzido por um cmdlet do formato. Na maior parte, apenas um cmdlet out pode manipular o que produzir os cmdlets de formatação. Portanto, um cmdlet do formato será sempre a última coisa na sua linha de comando, a única exceção de quando ele é seguido de um cmdlet de saída.

Check-out: Fim da linha

Como saída cmdlets devem lidar com o resultado final de qualquer comando que você já ter executado, elas próprias (com uma exceção) não produzem qualquer saída. Se você estiver usando um cmdlet de saída, ele será sempre a última coisa na linha de comando. Depois de executa o cmdlet out, haverá alguma coisa no pipeline para outros cmdlets agir.

A única exceção a essa regra, pelo menos com saída-cmdlets internos, é Out-String. Ele funciona muito diferentemente normal de cmdlets de saída. Ele posiciona objetos String no pipeline. Esse cmdlet e suas exceções não são o foco aqui, mas lembre-se de que eles existem. Execute Out-String ajuda se você gostaria de saber mais.

Esperar — eu disse “ interna fora-cmdlets? ” Na verdade, e a implicação que existem outros cmdlets de saída é totalmente verdadeira. Por exemplo, existe um terceiro comercial suplemento denominado PowerGadgets. Isso adiciona divertido cmdlets, como Out-Chart e Out-Gauge para repertório do shell. Add-in de saída-cmdlets podem não apresentar todas as mesmas regras e o comportamento descrito aqui; portanto, certifique-se de ler suas páginas de Ajuda (se fornecidas) para melhor entender como eles funcionam e o que fazer.

Opções de check-out

O Windows PowerShell vem com diversas opções de saída internas:

  • Out-Host é o padrão quando você não especificar nada
  • Out-Printer envia saída para uma impressora. Esse resultado é formatado por qualquer cmdlet de formato usado por você ou por padrões no subsistema de formatação
  • Out-File envia saída para um arquivo. Isso equivale funcionalmente à executar algo como Dir >txt. O >e >>atalhos, na verdade, estão usando Out-File nos bastidores. Out-File tem toneladas de opções para definir a largura do arquivo de saída (que afeta a formatação de decisões tomadas pelo shell), codificação, acréscimo ou substituição de caracteres e assim por diante
  • Grade de fora é novo no Windows PowerShell v2 e requer o Microsoft .NET Framework 3. 5 SP1 funcione corretamente. Exibe os objetos em uma tabela de gráfica com os cabeçalhos de coluna clique para classificar e uma caixa de filtro de pesquisa para ajudar a localizar resultados específicos

Ler a Ajuda para esses cmdlets pode ser extremamente educacional. Por exemplo, você sabia que Out-Host tem um parâmetro de –paging faz com que ele exiba uma página de saída de cada vez? Isso é semelhante ao comando “ mais ” no antigo shell CMD. exe. Tente executar isso:

Get-Service | Out-Host –paging

O parâmetro –width de Out-File é útil para criar tabelas muito grande. Eu já gerou enormes tabelas e imprimir os arquivos resultantes em uma plotadora para criar uma exibição interessante, montado na parede. A largura padrão só é 80 colunas, que não permitem para tabelas muito extensa. Por padrão, o shell só exibirá algo como uma tabela se ele tiver quatro ou menos colunas ou se uma configuração padrão oferece para um layout de tabela personalizado:

Get-WmiObject Win32_Service | Format-Table * | 
Out-File c:\services.txt –width 750

Out-Printer fornece um parâmetro – Name, portanto, você pode especificar a impressora desejada. Ele usará sua impressora padrão do Windows se você não especificar outra.

Por fim, sem grade também permite especificar um título para a janela de exibição Uso –title parâmetro do cmdlet. Isso é útil quando um script exibe uma grade para um usuário, como um título de um bom pode ajudá-los a compreender o que eles esteja vendo.

Quando não é de saída

Por fim, lá está Out-Null. Esse cmdlet é usado para a “ comer ” saída, que você não deseja ver. Por exemplo, a maioria dos métodos de instrumentação de gerenciamento do Windows retornam um objeto que indicando o êxito ou falha. Se você não quiser ver essa saída, simplesmente canalizá-lo para Out-Null:

Invoke-WmiMethod –name reboot –class win32_operatingsystem | 
Out-Null

Não somente estiver jogando com a diversão de opções de saída diferente, ele oferece uma idéia melhor do que o Windows PowerShell pode fazer para você. Você perceberá que o máximo para o qual você pode trabalhar com mais facilidade e menos funcionam no seu próprio.

Don Jones

Don Jones é um fundador da Concentrated Technology e perguntas de respostas sobre o Windows PowerShell e outras tecnologias de ConcentratedTech.com. Ele também é autor de Nexus.Realtimepublishers.com, que faz com que muitos de seus livros disponíveis como livres edições eletrônicas por meio de seu site.

Conteúdo relacionado