パフォーマンス モニター (Windows Server 2008 R2) で、\Processor(_Total)\% Processor Time が 10 を超えるたびにトリガーされるアラートを作成しました (アラートを送信する条件が常に満たされていることを保証するための小さな値です)。画像でアラート タスクのプロパティを確認できます。
さらに、ユーザーがログオンしているかどうかに関係なく実行される新しいタスクをタスク スケジューラに作成し、最高の特権で実行します。このタスクのトリガーには、次のプロパティがあります。
- タスクの開始: イベントについて
- 設定: 基本
- ログ: システム
- ソース: プロセッサ
アクション(これが正しいかどうかわからない部分です)には、次の設定があります。
- アクション: プログラムを開始します。
- プログラム/スクリプト: メールを送信するための PowerShell スクリプトへのパス。
PowerShell コードは次のとおりです ($name、$date、$counter、$threshold、$value は、上の画像のように、パフォーマンス モニター データ コレクター セットのアラート タスク プロパティから取得されると想定されています)。
function SendMail ($name, $date, $counter, $threshold, $value) {
$MailMessage = New-Object Net.Mail.MailMessage
$MailMessage.To.Add("myemail@blah.bleh")
$MailMessage.From = "do-not-reply@blah.bleh"
$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)
}
タスクが開始されると、履歴に次のように表示されます: タスクの開始、アクションの開始、および作成された ask プロセス。ただし、メールは送信されません。
Action: Send an email を使用してメールを送信しようとしましたが、うまくいきました。誰が何が間違っているのか知っていますか?