我有一个脚本,如果任务失败,该脚本会发送电子邮件(SendMailErr)。如果先前的send-mailmessage失败,我想添加重试发送电子邮件的功能。我曾尝试将其放入函数中的try catch finally循环中,但未按预期工作。这是我的代码
$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
}
最佳答案
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
}
关于email - 等待60秒,然后如果Send-MailMessage失败,则重新发送Powershell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9204908/