控制台输出到Powershell中的电子邮件

时间:2015-02-19 21:45:59

标签: powershell error-handling scripting smtp

我正在为每月维护过程编写一个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();

}

1 个答案:

答案 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();

}