Como Produzir Mensagens Informativas no PowerShell
- Introdução à Exportação de Saída no PowerShell
-
o Cmdlet
Write-Output
no PowerShell -
o Cmdlet
Write-Host
eWrite-Information
no PowerShell -
o Cmdlet
Write-Warning
no PowerShell -
o Cmdlet
Write-Debug
no PowerShell -
o Cmdlet
Write-Error
no PowerShell -
o Cmdlet
Write-Verbose
no PowerShell

Escrever mensagens informativas no console é um processo essencial em qualquer linguagem, pois fornece feedback correto ao usuário. No entanto, existem várias maneiras de imprimir mensagens no Windows PowerShell.
Este artigo irá diferenciar os vários comandos de escrita, como escrever mensagens informativas, de aviso e de erro, e fornecer situações sobre quando e onde podemos usá-los.
Introdução à Exportação de Saída no PowerShell
Antes de começarmos a discutir os diferentes comandos de escrita, vale a pena notar que o PowerShell pode gerar uma mensagem envolvendo uma única linha com aspas simples (''
) ou aspas duplas (""
).
Exemplo de Código:
"Hello World!"
'Hello World'
Saída:
Hello World!
Hello World
Essa sintaxe é possível no PowerShell devido à expressão literal da string e ao pipeline de string oculto. Os vários trechos de código acima são equivalentes ao exemplo de código abaixo.
Exemplo de Código:
"Hello World!" | Out-Host
O comando Out-Host
envia os objetos precedidos para exibição no console.
o Cmdlet Write-Output
no PowerShell
O primeiro método de impressão é o comando Write-Output
. Este cmdlet é a sintaxe mais básica de todos os métodos de impressão dentro do ambiente de script do PowerShell.
Podemos equipará-lo a muitos métodos básicos de impressão de diferentes idiomas, como print
e stdout
.
Exemplo de Código:
Write-Output "Hello World!"
Saída:
Hello World!
o Cmdlet Write-Host
e Write-Information
no PowerShell
O comando Write-Host
é outro método de impressão semelhante à maneira anterior, Write-Output
.
A única diferença deste comando antes de ser atualizado no PowerShell 5.0 é que o método só pode gerar mensagens com cores diferentes usando os parâmetros -BackgroundColor
e -ForegroundColor
.
Como mencionado, a partir do Windows PowerShell 5.0, Write-Host
agora é um wrapper para Write-Information
. Isso nos permite usar Write-Host
para emitir saída para o fluxo de informações.
Esse cmdlet permite a supressão ou captura de dados escritos usando o comando Write-Host
, enquanto preserva a compatibilidade com versões anteriores.
A variável de preferência $InformationPreference
e o parâmetro padrão -InformationAction
não afetam as mensagens Write-Host
. A exceção a essa regra é -InformationAction Ignore
, que efetivamente suprime a saída de Write-Host
.
Escrever para o fluxo de informações usando Write-Host
ou Write-information
não criará problemas com sua string de saída.
Também podemos manipular a visibilidade do fluxo de informações se usarmos o parâmetro -InformationAction
, desde que também vinculamos o valor do parâmetro fornecido às instruções Write-Host
na função.
Por exemplo, o exemplo abaixo desativará o fluxo de informações por padrão, a menos que solicitado o contrário através do parâmetro -InformationAction
.
Write-Host 'This is a test message' -InformationAction $InformationPreference -ForegroundColor Green
o Cmdlet Write-Warning
no PowerShell
O comando Write-Warning
escreve uma mensagem de aviso para o host do Windows PowerShell. A resposta ao evento de aviso depende do valor da variável $WarningPreference
do usuário e do parâmetro padrão -WarningAction
.
Os valores válidos da variável $WarningPreference
são os seguintes.
Stop
- Exibe as mensagens de aviso e erro e, em seguida, para a execução.Inquire
- Exibe a mensagem de aviso e solicita ao usuário permissão para continuar na forma de uma mensagem de confirmação.Continue
- O valor padrão da variável. Exibe a mensagem de aviso e, em seguida, a executa.SilentlyContinue
- Não exibe a mensagem de aviso. Continua executando.
Exemplo de Código:
Write-Warning "This is only a test warning notification." -WarningAction Continue
o Cmdlet Write-Debug
no PowerShell
O comando Write-Debug
é também outro método de impressão no PowerShell. No entanto, isso é geralmente usado mais em desenvolvimento para imprimir mensagens de depuração no ambiente de script.
As mensagens de depuração não são exibidas por padrão, mas podem ser alteradas usando a variável $debugPreference
.
Exemplo de Código:
Write-Debug "Error on line 1. Please investigate."
$debugPreference = "Continue"
Write-Debug "Error on line 5. Please investigate."
Saída:
DEBUG: Error on line 5. Please investigate.
o Cmdlet Write-Error
no PowerShell
O comando Write-Error
gera um erro não terminante. Por padrão, os erros são enviados para o fluxo de erro do programa host do PowerShell para serem exportados junto com a saída.
Para gerar um erro não terminante, insira uma string de mensagem de erro, um objeto ErrorRecord
ou um objeto Exception
. Em seguida, use os diferentes parâmetros do Write-Error
para preencher o registro de erro que iremos exportar.
Erros não terminantes escreverão um erro no fluxo de erro, mas não interromperão o processamento do comando. Por exemplo, se um erro não terminante for lançado em um item em um conjunto de itens de entrada, o cmdlet continuará a processar os outros itens.
Exemplo de Código:
Write-Error "Invalid object" -ErrorId B1 -TargetObject $_
Saída:
Write-Error "Invalid object" -ErrorId B1 -TargetObject $_ : Invalid object
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : B1
o Cmdlet Write-Verbose
no PowerShell
O comando Write-Verbose
escreve texto no fluxo de mensagem detalhada do PowerShell.
Assim como o comando Write-Debug
, a mensagem detalhada não é exibida por padrão, mas pode ser exibida usando a variável $VerbosePreference
ou adicionando o parâmetro de alternância -Verbose
.
Exemplo de Código:
Write-Verbose -Message "This will not be displayed."
Write-Verbose -Message "This will be displayed" -Verbose
Saída:
VERBOSE: This will be displayed
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn