我有一个脚本,下面有许多部分,每晚运行一次。我想通过电子邮件发送任何/所有错误,以便我可以收到警报并查看错误。我遇到了第一步的问题,即捕获所有/任何错误...我假设我可以发送电子邮件或捕获到某种缓冲区的文件,然后我可以发送电子邮件甚至更好。任何有关这两个步骤的帮助都将受到赞赏 - 特别是捕获部分。
#---- 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
答案 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://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
然后将那些存储在中央共享中的内容,您可以将其作为附件提取到电子邮件中。