Como executar novamente uma linha de um cmdlet do PowerShell se ele falhar

1

Eu escrevi um script do PowerShell que deveria enviar e-mails automaticamente, mas às vezes o e-mail não é enviado devido a um problema de rede.

Veja como estou enviando e-mail:

$smtp_notification.Send($mail_notification)

Aqui estão os registros de erros:

Exception calling "Send" with "1" argument(s): "Failure sending mail."
At line:1 char:24
+ $smtp_notification.Send <<<< ($mail_notification)
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Existe alguma maneira de reexecutar a linha de envio quando eu encontrei essa falha? Alguém pode me dar algumas sugestões, por favor?

    
por pansal 07.04.2012 / 07:33

1 resposta

3

Coloque um loop com um bloco try, de forma muito simplista:

$worked = $false
while (-not $worked) {
  try {
    #Perform command to retry, passing -ErrorAction Stop

    $worked = $true  # An exception will skip this
  } catch {
    # Should check to retry: error record is in $_
  }
}
    
por 07.04.2012 / 09:39

Tags