email - 等待60秒,然后如果Send-MailMessage失败,则重新发送Powershell

标签 email powershell error-handling try-catch powershell-2.0

我有一个脚本,如果任务失败,该脚本会发送电子邮件(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/

相关文章:

powershell - 本地创建 VHD 并在 Azure Cloud Powershell 中还原

c - C 静态库上的错误处理实现

php - 引用 - 这个错误在 PHP 中意味着什么?

JavaMail、IMAP、大量文件夹的性能

email - 设备(事物)与 AWS IoT 断开连接时发送邮件的规则

python - 通过Gmail API发送回复

c# - 在 C# 中测试电子邮件是否从外部系统发送

vb.net - Powershell - 将自定义对象返回到 C# 主机

powershell - 如何使用 Windows Azure Powershell 命令获取 Azure 角色实例

django - Tastypie-django 自定义错误处理