PowerShell: Como posso garantir que uma parte do código seja sempre executada, independentemente do erro?

0

Eu tenho um script do PowerShell que reduz as configurações de segurança de macro do Office (via chaves do Registro) para executar uma macro desinibida (a diretiva do sistema é desabilitá-las por padrão com um alerta) antes de definir as chaves novamente para seus valores anteriores .

Embora ainda não tenha sido feito, estou preocupado com a macro e / ou o PowerShell encontrando algum tipo de erro fatal, derrubando o shell antes que ele tenha a chance de aumentar o nível de segurança da macro novamente. Meus usuários não são sofisticados, portanto, é improvável que compreendam o impacto de um evento como esse.

Só queria encontrar ideias sobre uma solução relativamente infalível aqui ou qual a melhor forma de abordar essa questão?

    
por xeijin 04.09.2017 / 15:49

1 resposta

3

Você deve agrupar seu código em try e, em seguida, manipular todos os erros que surjam com catch .

Há também finally , que deve ser definido imediatamente após o bloco catch e executado todas as vezes, independentemente de ter ocorrido um erro ou não. Dessa forma, você pode executar ações que precisam ser feitas, independentemente de uma operação ser bem-sucedida ou não.

No seu exemplo, eu faria algo assim:

Try
{
  # Lower security level
  # Run macro
}
Catch
{
  # Ignore the error
}
Finally
{
  # Raise security level
}
    
por 04.09.2017 / 16:02