Diga adeus à saída de script monótona e previsível! Com o cmdlet Write-Output
do PowerShell, você pode adicionar um toque de criatividade e personalidade aos seus scripts do PowerShell.
O cmdlet Write-Output
é uma ferramenta poderosa e uma companhia perfeita para todas as suas necessidades de automação e gerenciamento de sistema. E neste tutorial, você aprenderá a maximizar o potencial do cmdlet Write-Output
.
Pronto? Continue lendo e descubra a magia do cmdlet Write-Output
!
Pré-requisitos
Este tutorial será uma demonstração prática. Para acompanhar, certifique-se de ter um computador com o PowerShell instalado (preferencialmente a versão mais recente). Este tutorial usa o Windows 10 com o PowerShell 7 instalado.
Output de Objetos para o Console
O cmdlet Write-Output
do PowerShell escreve objetos no fluxo de saída e exibe a saída de um comando ou mensagem no console. Mas você ficará surpreso com como essa ferramenta torna a saída mais significativa e valiosa.
Em vez de exibir a saída no console, use o cmdlet Write-Output
para personalizar a saída. O cmdlet Write-Output
pode enviar qualquer objeto ou tipo de dados, como strings, inteiros, arrays e até objetos complexos.
Execute o comando abaixo para enviar uma mensagem Olá, Mundo! para o console.
Aqui você pode ver a função mais básica do cmdlet Write-Output
. Mas continue lendo para aprender mais sobre o uso intermediário e avançado deste cmdlet.<>

Passando Objetos para Outro Comando
Além de exibir a saída no console, você pode usar o comando Write-Output
para enviar o objeto para outro comando para processamento adicional. Como? Usando o operador de pipeline (|
). O encadeamento de comandos torna Write-Output
um comando útil e versátil para tarefas de automação e gerenciamento de sistema.
Suponha que você queira ver qual processo consome a maior parte dos seus recursos, como a CPU.
Execute os comandos abaixo para realizar o seguinte:
- Obter uma lista de todos os processos (
Get-Process
) em execução no seu sistema. - Output a lista para o pipeline, que é então passada para o comando
Sort-Object
. O operador de pipeline permite encadear vários comandos juntos e processar a saída de um comando como entrada para outro. - Ordene a lista de processos (
Sort-Object
) pelo uso daCPU
em ordem-Descending
.
Observe que você pode colocar qualquer um dos comandos deste tutorial em um script do PowerShell e executá-lo.
A lista ordenada é exibida no console, como mostrado abaixo.

Output de Objetos com um Formato Personalizado
Você viu o formato básico do cmdlet Write-Output, que funciona bem. Mas se preferir, também pode produzir saída de objetos com um formato personalizado para adicionar um toque pessoal. Um formato personalizado pode ser útil quando deseja exibir propriedades específicas do objeto ou personalizar a aparência da saída.
Para produzir a saída de um objeto com um formato personalizado, o Format-Custom
juntamente com o cmdlet Write-Output
fará o truque, da seguinte forma:
para criar o formato de saída personalizado e, em seguida, encaminhar a saída do cmdlet Format-Custom para Write-Output.<>
Execute o comando abaixo, que não produz saída, mas cria um objeto (um hashtable) que contém três propriedades com os valores correspondentes para produzir a saída.
Agora, execute o comando abaixo para realizar o seguinte:
- Crie um formato personalizado (
Format-Table
) para a saída (Write-Output
) do seu hashtable ($object
). As propriedadesProperty1
,Property2
eProperty3
são definidas como colunas. - Ajuste as larguras das colunas (
-AutoSize
) para ajustar o conteúdo.

Alternativamente, você pode usar o cmdlet Format-List
com Write-Output
para enviar o objeto como uma lista de pares propriedade-valor.

Passando um Objeto de Coleção como uma Única Entidade
Por padrão, Write-Output
envia cada elemento da coleção separadamente pelo pipeline, um processo chamado enumeração. Mas você pode evitar esse comportamento ao anexar o parâmetro -NoEnumerate
, passando o objeto de coleção inteiro como uma única entidade.
Para ver como o parâmetro -NoEnumerate
funciona, siga estas etapas:
Execute os comandos abaixo para realizar o seguinte:
- Declare um array de
$numbers
de um a três (1,2,3
).
- Conte o número de objetos (
Measure-Object
) passados pelo pipeline. - Output o objeto de medição (
Write-Output $numbers
).
Sem o parâmetro NoEnumerate
, Measure-Object
retorna uma contagem de três (3), pois cada elemento da matriz $numbers
foi enumerado e passado individualmente pelo pipeline.

Agora, execute os seguintes comandos para produzir a contagem dos objetos passados pelo pipeline.
Mas como você anexou o parâmetro -NoEnumerate
, o cmdlet Measure-Object
trata o objeto como uma única entidade, retornando uma contagem de um (1).

Envolver o comando
Write-Output
entre parênteses (ou seja,(Write-Output 1,2,3)
) forçará a enumeração a acontecer independentemente do parâmetro-NoEnumerate
.
Criando um Sistema de Menu e Solicitações de Entrada
Outro excelente uso do cmdlet Write-Output
é criar um sistema de menu com um script do PowerShell que solicita entrada do usuário.
Crie um arquivo .ps1 com seu editor de texto/código preferido, preencha o código abaixo e salve o arquivo. Você pode nomear o arquivo como desejar, mas a escolha deste tutorial é myoutput.ps1.
O código abaixo usa um loop para continuar solicitando ao usuário que selecione uma opção de uma lista de opções até que o usuário selecione a opção Sair
.
Agora, execute o script (myoutput.ps1
) a partir do diretório de trabalho.
Como mostrado abaixo, a mensagem associada à sua seleção é exibida quando você escolhe as opções 1, 2 ou 3. Mas quando você seleciona a opção 4, o script é encerrado.

Exibindo uma Tela de Abertura ou Mensagem de Boas-Vindas
Além de listar opções que os usuários podem escolher, com Write-Output
, você também pode exibir uma tela de apresentação ou uma mensagem de boas-vindas. Telas de apresentação sofisticadas causam uma boa impressão (profissional e polida) em seu script.
Substitua o código no seu arquivo myoutput.ps1 pelo abaixo, que exibe uma tela de apresentação (um banner de uma mensagem de boas-vindas) quando você executa seu script.
Você pode personalizar a tela de apresentação modificando o texto e o formato do banner. Você pode adicionar elementos adicionais, como um logotipo ou texto, à tela de apresentação conforme desejado.
Agora, execute o script e veja como sua tela de apresentação fica.

Exibindo uma Barra de Progresso
Ao executar scripts, um indicador de progresso elimina a ansiedade do usuário sobre se o script está sendo executado ou não. Barras de progresso podem ser úteis para indicar o progresso de um script ou operação em andamento para o usuário. Felizmente, com o cmdlet Write-Output
, você pode criar uma barra de progresso de acordo com sua preferência.
Abra seu arquivo myoutput.ps1, e adicione o código abaixo ao final do existente no arquivo de script.
O código abaixo usa um loop while
para iterar por vários passos. Neste exemplo, 100 passos. Cada iteração do loop calcula a porcentagem de passos que foram concluídos e exibe uma barra de progresso usando Write-Output
.
A barra de progresso é criada usando uma combinação dos seguintes operadores:
*
– Repete uma string um número específico de vezes$()
– Permite que a saída de uma expressão seja incluída em uma string.
O script então pausa (Start-Sleep
) por 1
segundo para simular progresso antes de prosseguir para a próxima etapa.
Agora, execute o script e veja como a barra de progresso funciona.
Abaixo, você pode ver a tela de abertura junto com a barra de progresso.

Conclusão
Neste tutorial, você viu como Write-Output
pode facilmente emitir objetos, tipos de dados e formatos personalizados. Além disso, você abordou o uso do operador de pipeline para enviar saída para outros comandos para processamento adicional.
Seja você escrevendo uma saída de mensagem simples ou tarefas de automação complexas, Write-Output
é uma ferramenta indispensável para criar scripts PowerShell mais informativos e profissionais.
Com esse conhecimento recém-adquirido, por que não escrever suas saídas em diferentes tipos de arquivo, como arquivos .txt e .xml? Independentemente da intenção, cópias de saída são úteis para solucionar problemas com seu sistema ou aplicativos. O Write-Output
e o cmdlet Out-File
concedem a você o poder que você nunca soube que precisava.
Source:
https://adamtheautomator.com/powershell-write-output/