我有一个脚本,下面有许多部分,如下所示。我想通过电子邮件发送任何/所有错误,以便我可以收到警报并查看错误。我遇到了第一步的问题,即捕获所有/任何错误...我假设我可以发送电子邮件或捕获到某种缓冲区的文件,然后我可以发送电子邮件甚至更好。任何有关这两个步骤的帮助都将受到赞赏 - 特别是捕获部分。
#---- 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
应该在$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 "[email protected]" -To "[email protected]" -Subject "PowerShell Error Report"
在您的代码中,您需要捕获错误以便记录它们,甚至写入您自己的事件日志...
...或者编写自己的日志功能。
示例: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
然后将那些存储在中央共享中的内容,您可以将其作为附件提取到电子邮件中。