我正在为每月维护过程编写一个PowerShell脚本。为了跟踪它,我使用了一个try catch块,它会在成功或失败时发送电子邮件。要做到这一点,我使用smtp。我想知道如何将控制台输出写入电子邮件。如果您有任何建议,请告诉我。无法入门。
提前谢谢你。
这是我最近尝试的但是没有用:
catch {
$smtpServer = "example"
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$msg.From = "example"
$msg.To.Add("example")
$msg.Subject = "MONTHLY MAINTENANCE FAILED!"
$msg.Body= Write-Error ("Monthly maintenance failed! Please investigate." + $_)
$smtp.Send($msg)
$msg.Dispose();
}
答案 0 :(得分:2)
建议:
1)编写故意触发错误的示例脚本
2)确保您已成功捕获所需的错误文本(您应该可以从$_
获取错误文本,就像您正在做的那样)
3)确保您的电子邮件参数正确
4)分而治之:首先是Powershell语法,之后是电子邮件连接。
我的预感是您需要调试电子邮件连接。
例如:
Try {
1/0 # throw "divide by zero"
}
Catch {
$errmsg = "Monthly maintenance failed! Please investigate." + $_
Write-Console $errmsg
$smtpServer = "example"
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$msg.From = "example"
$msg.To.Add("example")
$msg.Subject = "MONTHLY MAINTENANCE FAILED!"
$msg.Body= $errmsg
$smtp.Send($msg)
$msg.Dispose();
}