我已經在性能監視器(Windows Server 2008 R2)中創建了一條警報,只要\ Processor(_Total)\%處理器時間高於10(一個小值,以保證始終滿足發送警報的條件)。您可以在圖像中看到警報任務屬性。使用PowerShell腳本從性能監視器發送電子郵件警報
此外,我也創建任務計劃中的新任務將運行用戶是否登錄或沒有,它會使用最高權限運行。此任務的觸發條件有以下特性:
- 開始新的任務:在事件
- 設置:基本
- 日誌:系統
- 來源:處理器
的操作(這是我不知道它是否正確的部分)具有以下設置:
- 操作:啓動程序
- 程序/腳本:PowerShell腳本發送電子郵件的路徑。
PowerShell的代碼如下($名稱,$日期,$計數器,$門檻,$值從何而來性能數據收集器設置警戒任務屬性,如圖片上面):
function SendMail ($name, $date, $counter, $threshold, $value) {
$MailMessage = New-Object Net.Mail.MailMessage
$MailMessage.To.Add("[email protected]")
$MailMessage.From = "[email protected]"
$MailMessage.Subject = "ALERT - Performance Monitor"
$MailMessage.IsBodyHtml = $True
$MailMessage.Body = @"
<html><head></head><body>
The following counter needs attention:<BR><BR>
Name: $($name)<BR>
Date: $($date)<BR>
Counter: $($counter)<BR>
Threshold: $($threshold)<BR>
Actual Value: $($value)<BR>
<FONT face=Courier>$($html)</FONT>
<BR>
--- Automatically generated with SENDMAIL function ---
</body>
</html>
"@
$SmtpClient = New-Object Net.Mail.SmtpClient("blah.bleh")
$SmtpClient.Send($MailMessage)
}
一旦任務啓動,我在歷史記錄中有以下內容:任務啓動,操作啓動和創建詢問過程。該電子郵件從未發送。
我嘗試使用操作發送電子郵件:發送電子郵件,它工作正常。有誰知道什麼可能是錯的?
您確定所有參數都已在腳本中正確傳遞。另一件事是,如果你使用的是PowerShell v3,那麼你可以使用send-mailmessage cmdlet -http://stackoverflow.com/a/17456077/581922 – Mitul
@Mitul:你的意思是參數$ name,$ date等?如果是這樣,我該如何檢查?如果你指的是電子郵件,SMTP服務器等參數,我使用的是我在Action中使用的相同:發送電子郵件(不同的是,在腳本中,我的smtp服務器以「SMTP」開頭。 (不幸的是,我沒有使用v3: – Anna
您發佈的代碼定義了一個函數,但我沒有看到您在任何地方調用該函數 –