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

问题描述 投票:-1回答:2

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

#---- 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
powershell
2个回答
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 "[email protected]" -To "[email protected]" -Subject "PowerShell Error Report"

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

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

© www.soinside.com 2019 - 2024. All rights reserved.