Como Suprimir Erros do PowerShell

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

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:

suprimir erros do powershell - saída 1

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:

suprimindo erros do powershell - saída 2

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:

suprimindo erros do powershell - saída 3

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.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn