1
我有一个脚本在任务失败时发送电子邮件(SendMailErr)。如果以前的发送邮件消息失败,我想添加重试以发送电子邮件。我试图把它放入try函数中,最后在函数内循环,但它没有像预期的那样工作。这里是我的代码等待60秒,然后重新发送,如果Send-MailMessage失败Powershell
$waitMail = 60
$sendErr = "Error Sending Email to SI Team: $_. Retrying in $waitMail minute(s)"
function SendMailErr {
$MessageParameters = @{
From = $from
To = $to
Subject = "ALERT: Backup Failed for $env:ComputerName.$env:USERDNSDOMAIN - $((Get-Date).ToShortDateString())"
Body = $body | Out-String
SmtpServer = $Smtp
Priority = "High"
Attachments = $attachments
}
try { Send-MailMessage @MessageParameters -EA Stop
Exit
}
catch { Write-Log $sendErr
Sleep $waitMail
Send-MailMessage @MessageParameters
Exit
}
finaly {
Write-Log "Error: Unable to send email to SI Team"
Exit
}
任何建议将不胜感激。我相信有更好的方法来构建它,我的谷歌搜索还没有发现它。
感谢, 阿梅利亚
我在我自己的笨拙方式想通了这一点......
感谢您给指出了我的陷阱内的退出的人。
我下面的作品现在
function SendMailErr {
$MessageParameters = @{
From = $from
To = $to
Subject = "ALERT: Backup Failed for $env:ComputerName.$env:USERDNSDOMAIN - $((Get-Date).ToShortDateString())"
SmtpServer = $smtp
Body = $body
Priority = "High"
}
try {
Send-MailMessage @MessageParameters -EA Stop;
}
catch { Write-Host $sendErr
Sleep $waitMail
Send-MailMessage @MessageParameters
}
Exit
}
你忘了说明问题。你期望什么?发生了什么? – 2012-02-09 03:14:15
对不起。它根本没有发送电子邮件。我希望它会尝试发送电子邮件,如果它没有在日志文件中写入,如果失败,但又在尝试。我发现发送邮件偶尔没有发送,但一分钟后手动重试(SMTP服务不可用) – user1131196 2012-02-09 03:28:38
很高兴你知道了。只是为了让你知道,你可以在这里回答你自己的问题,这非常好。 – 2012-02-09 05:51:31