捕获PowerShell脚本和电子邮件中的所有错误

时间:2017-12-29 22:10:11

标签: powershell

我有一个脚本,下面有许多部分,每晚运行一次。我想通过电子邮件发送任何/所有错误,以便我可以收到警报并查看错误。我遇到了第一步的问题,即捕获所有/任何错误...我假设我可以发送电子邮件或捕获到某种缓冲区的文件,然后我可以发送电子邮件甚至更好。任何有关这两个步骤的帮助都将受到赞赏 - 特别是捕获部分。

#---- Set Exchange archive licnse for all users with an Office license ----
Get-MsolUser -ALL | where {($_.Licenses.accountskuID -contains 
"Tennant:STANDARDWOFFPACK") -and ($_.Licenses.accountskuID -notcontains 
"Tennant:EXCHANGEARCHIVE_ADDON")} | Set-MsolUserLicense -AddLicenses 
"Tennant:EXCHANGEARCHIVE_ADDON"


#-------------------------- ENABLE LITIGATION HOLD ----------------------
Get-Mailbox -ResultSize Unlimited -Filter {RecipientTypeDetails -eq 
"UserMailbox"} | Set-Mailbox -LitigationHoldEnabled $true -
LitigationHoldDuration 2555

2 个答案:

答案 0 :(得分:0)

错误消息应自动在$error变量中捕获;使用$error[0]获取最新消息。

然后,您可以将其与Send-MailMessage Cmdlet一起用作电子邮件的正文

示例:

$body = "";
foreach ($e in $error) {
    $body += "<hr /><pre>" + $e.ToString() + "</pre><hr />";
}
Send-MailMessage -BodyAsHtml -Body $body -SmtpServer "smtp_server_address" -From "alert@somedomain.tld" -To "your-email@somedomain.tld" -Subject "PowerShell Error Report"

答案 1 :(得分:0)

在您的代码中,您需要捕获错误才能记录它们,甚至写入您自己的事件日志......

https://blogs.technet.microsoft.com/heyscriptingguy/2013/02/01/use-powershell-to-create-and-to-use-a-new-event-log

https://blogs.technet.microsoft.com/heyscriptingguy/2013/06/20/how-to-use-powershell-to-write-to-event-logs

...或者编写自己的日志功能。

实施例: https://gallery.technet.microsoft.com/scriptcenter/Write-Log-PowerShell-999c32d0

或者,首先使用PowerShell日志记录。

实施例: 启用组策略中的登录 https://gallery.technet.microsoft.com/scriptcenter/Write-Log-PowerShell-999c32d0

使用PowerShell脚本

实施例: https://technet.microsoft.com/en-us/library/ff687007.aspx?f=255&MSPPError=-2147217396

然后将那些存储在中央共享中的内容,您可以将其作为附件提取到电子邮件中。