Diga adeus a saídas de script chatas e previsíveis! Com o cmdlet do PowerShell Write-Output
, você pode adicionar um toque de criatividade e personalidade aos seus scripts PowerShell.
O cmdlet Write-Output
é uma ferramenta poderosa e um companheiro perfeito para todas as suas necessidades de automação e gestão de sistemas. 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.
Enviando Objetos para o Console
O cmdlet do PowerShell Write-Output
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 produzir qualquer objeto ou tipo de dado, como strings, inteiros, arrays e até objetos complexos.
Execute o comando abaixo para enviar uma mensagem Hello, World! para o console.
Abaixo, você pode ver a função mais básica do cmdlet Write-Output
. Mas continue lendo para aprender mais sobre o uso intermediário a 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 o 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:
- Recuperar 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. - Ordenar a lista de processos (
Sort-Object
) pelo uso daCPU
em ordem-Descending
.
Observe que você pode colocar qualquer um dos comandos neste tutorial em um script do PowerShell e executá-lo.
A lista ordenada é exibida no console, como mostrado abaixo.

Produzindo Objetos com um Formato Personalizado
Você viu o formato de saída básico do cmdlet Write-Output, que funciona bem. Mas se preferir, também pode produzir 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 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 depois 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 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 se adequarem ao conteúdo.

Alternativamente, você pode usar o cmdlet Format-List
com Write-Output
para exibir o objeto como uma lista de pares de 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 apendando 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. - Write-Output $numbers | Measure-Object
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 exibir a contagem dos objetos passados pelo pipeline.
Mas, como você adicionou o parâmetro -NoEnumerate
, o cmdlet Measure-Object
trata o objeto como uma única entidade, retornando uma contagem de um (1).

Colocar o comando
Write-Output
entre parênteses (ou seja,(Write-Output 1,2,3)
) forçará a enumeração, 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 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 dar o nome que quiser, mas a escolha deste tutorial é meusaida.ps1.
O código abaixo utiliza 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
) 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 as opções das quais 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 elaboradas causam uma boa impressão (profissional e polida) em seu script.
Substitua o código em seu arquivo myoutput.ps1 pelo abaixo, que produz 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 demorada para o usuário. Felizmente, com o cmdlet Write-Output
, você pode criar uma barra de progresso ao seu gosto.
Abra seu arquivo myoutput.ps1 e adicione o código abaixo ao final do já existente no arquivo de script.
O código abaixo usa um loop while
para iterar por várias etapas. Neste exemplo, 100 etapas. Cada iteração do loop calcula a porcentagem de etapas concluídas 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 especificado 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 o progresso antes de passar 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 produzir objetos, tipos de dados e formatos personalizados. Além disso, você explorou o uso do operador de pipeline para enviar saída para outros comandos para processamento adicional.
Seja ao redigir uma saída de mensagem simples ou ao lidar com tarefas complexas de automação, 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 .txt e .xml? Independentemente da intenção, cópias de saída são úteis para solucionar problemas em seu sistema ou aplicativos. O Write-Output
e o cmdlet Out-File
concedem a você o poder que você nem sabia que precisava.
Source:
https://adamtheautomator.com/powershell-write-output/