Como Suprimir Erros do PowerShell
- Introdução à Ação de Erro no PowerShell
-
Use o Parâmetro
-ErrorAction
no PowerShell - Definindo Preferências de Ação de Erro no PowerShell
-
Use o Parâmetro de Instrução
Try-Catch
no PowerShell - Conclusão

Este artigo mergulha no intricado mundo do tratamento de erros do PowerShell, explorando vários métodos, como o parâmetro -ErrorAction
, definição de preferências de ação de erro e utilização da instrução Try-Catch
. Cada um desses métodos serve a um propósito único, desde continuar a execução de scripts silenciosamente, apesar dos erros, até implementar mecanismos sofisticados de tratamento de erros.
Esta exploração detalhada é projetada para equipar tanto iniciantes quanto programadores experientes com o conhecimento para tomar decisões informadas sobre o tratamento de erros em seus scripts PowerShell, garantindo que possam gerenciar efetivamente situações inesperadas e manter a integridade do script.
Introdução à Ação de Erro no PowerShell
Embora seja fácil suprimir erros do Windows PowerShell, fazê-lo nem sempre é a melhor opção (embora possa ser). Se digitar sem cuidado instruções para que o PowerShell oculte erros, isso pode fazer com que nosso script se comporte de forma imprevisível.
Suprimir mensagens de erro também torna a resolução de problemas e a coleta de informações muito mais complicadas. Portanto, prossiga com cuidado e tenha cuidado ao usar os seguintes trechos que você verá neste artigo.
Use o Parâmetro -ErrorAction
no PowerShell
O parâmetro -ErrorAction
no PowerShell é projetado para ditar como um cmdlet responde a erros em tempo de execução. Por padrão, o PowerShell exibirá erros no console e continuará a execução.
No entanto, em certos cenários, você pode querer alterar esse comportamento - por exemplo, para suprimir mensagens de erro ou para interromper a execução quando ocorre um erro. É aqui que o -ErrorAction
se torna crucial.
Comando:
Get-Service 'svc_not_existing' -ErrorAction SilentlyContinue
Write-Host "This line will execute regardless of the above command's result."
Em nosso script, tentamos recuperar um serviço chamado 'svc_not_existing'
, um serviço que presumivelmente não existe. Ao aplicar -ErrorAction SilentlyContinue
, instruímos o PowerShell a continuar sem interrupção, evitando a exibição de uma mensagem de erro caso não consiga localizar o serviço.
Subsequentemente, nosso script faz a transição suavemente para o comando Write-Host
. Este comando exibe uma mensagem específica no console.
Saída:
Definindo Preferências de Ação de Erro no PowerShell
Se precisarmos que um script se comporte de uma certa maneira (como suprimir erros), podemos considerar a configuração de algumas variáveis de preferência. As variáveis de preferência atuam como configurações de configuração para o PowerShell.
Podemos usar uma variável de preferência para controlar o número de itens de histórico que o PowerShell retém ou forçar o PowerShell a perguntar ao usuário antes de realizar ações específicas.
Por exemplo, aqui está como você pode usar uma variável de preferência para definir o parâmetro -ErrorAction
como SilentlyContinue
para toda a sessão.
Comando:
$ErrorActionPreference = 'SilentlyContinue'
Get-Service 'nonexistent_service'
Write-Host "This message is displayed even if the previous command fails."
Em nosso script, começamos definindo $ErrorActionPreference
como 'SilentlyContinue'
. Esta ação garante que a configuração seja aplicada a todos os comandos subsequentes dentro do nosso script.
Como resultado, quaisquer erros que normalmente surgiriam são efetivamente suprimidos.
Em seguida, usamos o cmdlet Get-Service
para tentar recuperar um serviço inexistente. Em circunstâncias normais, isso geraria um erro. No entanto, graças à nossa configuração anterior de $ErrorActionPreference
, qualquer erro que teria sido gerado permanece invisível e discreto.
Após isso, nosso script avança graciosamente para o comando Write-Host
. Este comando é responsável por exibir uma mensagem no console.
Saída:
Existem muitas outras ações de erro que podemos especificar para o parâmetro de troca ErrorAction
.
Continue
: O PowerShell exibirá a mensagem de erro, mas o script continuará a ser executado.Ignore
: O PowerShell não produz nenhuma mensagem de erro, não escreve nenhuma saída de erro no host e continua a execução.Stop
: O PowerShell exibirá a mensagem de erro e parará de executar o script.Inquire
: O PowerShell exibe a mensagem de erro, mas perguntará primeiro se o usuário deseja continuar.SilentlyContinue
: O PowerShell continua silenciosamente com a execução do código se o código não funcionar ou tiver erros não terminais.Suspend
: O PowerShell suspende o fluxo de trabalho do script.
Use o Parâmetro de Instrução Try-Catch
no PowerShell
A instrução Try-Catch
é uma ferramenta poderosa no PowerShell para gerenciar e responder a erros de maneira controlada e sofisticada. Ela permite que os programadores try
um bloco de código e catch
quaisquer exceções (erros) que ocorrem durante sua execução.
Essa abordagem é benéfica quando você deseja lidar com erros de forma elegante, realizar ações específicas quando um erro ocorre ou impedir que erros terminem abruptamente seu script.
Comando:
try {
Get-Service 'nonexistent_service'
}
catch {
Write-Host "An error occurred: $_"
}
Neste script, primeiro encapsulamos um comando propenso a erros, Get-Service 'nonexistent_service'
, dentro de um bloco try
. Estamos tentando recuperar um serviço que provavelmente não existe, o que normalmente resultaria em um erro.
No entanto, em vez de permitir que esse erro termine o script ou exiba uma exceção não tratada, o capturamos. No bloco catch
, então executamos um comando Write-Host
para exibir uma mensagem de erro personalizada, incluindo os detalhes do erro ($_
representa o objeto de erro atual).
Saída:
Conclusão
Ao concluirmos nossa jornada através das diferentes facetas do tratamento de erros no PowerShell, é claro que o poder desta linguagem de script reside em sua flexibilidade e profundidade. Desde a simplicidade do parâmetro -ErrorAction
até o controle nuançado oferecido por instruções Try-Catch
, o PowerShell fornece um rico conjunto de ferramentas para gerenciar erros em uma variedade de cenários.
Compreender essas ferramentas e saber quando aplicá-las é essencial para escrever scripts robustos e resilientes. Exploramos como suprimir erros pode ser tanto uma bênção quanto um risco, dependendo do contexto, e examinamos como capturar erros para análise posterior.
Agora, você deve ter uma compreensão abrangente desses métodos e estar bem equipado para aplicá-los em seus empreendimentos de script.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn