Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O PowerShell fornece vários cmdlets que permitem controlar a saída de dados diretamente. Esses cmdlets compartilham duas características importantes.
Primeiro, eles geralmente transformam dados em alguma forma de texto. Eles fazem isso porque produzem os dados para componentes do sistema que exigem entrada de texto. Isso significa que eles precisam representar os objetos como texto. Portanto, o texto é formatado como você o vê na janela do console do PowerShell.
Em segundo lugar, esses cmdlets usam o verbo out do PowerShell porque enviam informações do PowerShell para outro lugar.
Saída da consola
Por padrão, o PowerShell envia dados para a janela do host, que é exatamente o que o Out-Host cmdlet faz. O principal uso do cmdlet Out-Host é a paginação. Por exemplo, o comando a seguir usa Out-Host para paginar a saída do Get-Command cmdlet:
Get-Command | Out-Host -Paging
A janela de exibição do host está fora do PowerShell. Isso é importante porque quando os dados são enviados para fora do PowerShell, eles são realmente removidos. Você pode ver isso se tentar criar um pipeline que pagine dados para a janela do host e, em seguida, tentar formatá-los como uma lista, conforme mostrado aqui:
Get-Process | Out-Host -Paging | Format-List
Você pode esperar que o comando exiba páginas de informações do processo em formato de lista. Em vez disso, ele exibe a lista tabular padrão:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
101 5 1076 3316 32 0.05 2888 alg
...
618 18 39348 51108 143 211.20 740 explorer
257 8 9752 16828 79 3.02 2560 explorer
...
<SPACE> next page; <CR> next line; Q quit
...
O Out-Host cmdlet envia os dados diretamente para o console, para que o Format-List comando nunca receba nada para formatar.
A maneira correta de estruturar esse comando é colocar o Out-Host cmdlet no final do pipeline, conforme mostrado abaixo. Isso faz com que os dados do processo sejam formatados em uma lista antes de serem paginados e exibidos.
Get-Process | Format-List | Out-Host -Paging
Id : 2888
Handles : 101
CPU : 0.046875
Name : alg
...
Id : 740
Handles : 612
CPU : 211.703125
Name : explorer
Id : 2560
Handles : 257
CPU : 3.015625
Name : explorer
...
<SPACE> next page; <CR> next line; Q quit
...
Isso aplica-se a todos os cmdlets Out. Um cmdlet out deve sempre aparecer no final do pipeline.
Observação
Todos os cmdlets out renderizam a saída como texto, usando a formatação em vigor para a janela do console, incluindo limites de comprimento de linha.
Descartando resultado
O Out-Null cmdlet foi projetado para descartar imediatamente qualquer entrada recebida. Isso é útil para descartar dados desnecessários que você obtém como efeito colateral da execução de um comando. Ao digitar o seguinte comando, você não recebe nada de volta do comando:
Get-Command | Out-Null
O Out-Null cmdlet não descarta a saída de erro. Por exemplo, se você inserir o seguinte comando, uma mensagem será exibida informando que o PowerShell não reconhece Is-NotACommand:
PS> Get-Command Is-NotACommand | Out-Null
Get-Command : 'Is-NotACommand' isn't recognized as a cmdlet, function, operable program, or script file.
At line:1 char:12
+ Get-Command <<<< Is-NotACommand | Out-Null
Impressão de dados
Out-Printersó está disponível em plataformas Windows.
Você pode imprimir dados usando o Out-Printer cmdlet. O Out-Printer cmdlet usa sua impressora padrão se você não fornecer um nome de impressora. Você pode usar qualquer impressora baseada no Windows especificando seu nome para exibição. Não há necessidade de qualquer tipo de mapeamento de porta de impressora ou mesmo uma impressora física real.
Por exemplo, se você tiver as ferramentas de criação de imagens de documentos do Microsoft Office instaladas, poderá enviar os dados para um arquivo de imagem digitando:
Get-Command -Name Get-* | Out-Printer -Name 'Microsoft Office Document Image Writer'
Guardar dados
Você pode enviar a saída para um arquivo em vez da janela do console usando o Out-File cmdlet. A seguinte linha de comando envia uma lista de processos para o arquivo C:\temp\processlist.txt:
Get-Process | Out-File -FilePath C:\temp\processlist.txt
Os resultados de usar o cmdlet Out-File podem não ser os que espera se estiver acostumado com o redirecionamento de saída tradicional. Para entender seu comportamento, você deve estar ciente do contexto no qual o Out-File cmdlet opera.
No Windows PowerShell 5.1, o Out-File cmdlet cria um arquivo Unicode. Algumas ferramentas, que esperam arquivos ASCII, não funcionam corretamente com o formato de saída padrão. Você pode alterar o formato de saída padrão para ASCII usando o parâmetro Encoding :
Get-Process | Out-File -FilePath C:\temp\processlist.txt -Encoding ascii
Out-File Formata o conteúdo do arquivo para se parecer com a saída do console. Isso faz com que a saída seja truncada tal como numa janela de consola na maioria dos casos. Por exemplo, se você executar o seguinte comando:
Get-Command | Out-File -FilePath C:\temp\output.txt
A saída terá esta aparência:
CommandType Name Definition
----------- ---- ----------
Cmdlet Add-Content Add-Content [-Path] <String[...
Cmdlet Add-History Add-History [[-InputObject] ...
...
Para obter uma saída que não force quebras de linha para corresponder à largura da tela, você pode usar o parâmetro Width para especificar a largura da linha. Como Width é um parâmetro inteiro de 32 bits, o valor máximo que ele pode ter é 2147483647. Digite o seguinte para definir a largura da linha para esse valor máximo:
Get-Command | Out-File -FilePath C:\temp\output.txt -Width 2147483647
O Out-File cmdlet é mais útil quando você deseja salvar a saída como ela seria exibida no console.