アプリケーションで何かが発生したときに電子メールを送信するスケジュールされたタスクがあります。イベントの詳細をメールで送りたいと思います。どうやってするか?
タスクスケジューラを使用するWindowsServer 2008R2の場合。
これを達成する唯一の方法は、(私の意見では)少しの回避策です。タスクに対してtwoアクションを作成する必要があります。手順は次のとおりです。
プロセスの詳細は次のとおりです。 http://blogs.technet.com/b/jhoward/archive/2010/06/16/getting-event-log-contents-by-email-on-an-event- log-trigger.aspx
それを達成する唯一の方法ではありません。実際には、少なくともWindows Server2008で機能するはるかに優れた方法があります。
http://www.buit.org/2009/07/16/event-based-triggered-tasks/
要約すると、タスク定義をxmlにエクスポートし、テキストエディターで必要なデータのxpathクエリをいくつか追加し、コマンドラインを更新してから、更新したタスク定義をタスクスケジューラにインポートして戻す必要があります。
エクスポートしたら、xmlファイルを開き、<EventTrigger>ノードを見つけます。
子ノードを作成する<ValueQueries>
<ValueQueries>
<Value name="EventID">Event/System/EventRecordID</Value>
<Value name="Channel">Event/System/Channel</Value>
</ValueQueries>
次に、コマンドラインで$(EventID)と$(Channel)を使用してこの値クエリデータを参照できます。私のテストから、電子メールイベントはこれらの値を正しく置き換えません。代わりに、コマンドラインを実行する必要があります。もちろん、イベント内の任意のデータにxpathクエリを追加できます。これらは単なる例です。
また、これらのデータクエリからコマンドラインに特定のデータを渡す際にいくつかの問題が発生する可能性があります(引用符、スラッシュなどのさまざまな文字がコマンドインタープリターの特殊文字と競合する可能性があります)。これを軽減するために、上記で定義した2つのパラメーターを使用し、wevtutilを使用して残りのイベントデータを取得しました。
wevtutil qe "$(Channel)" /q:"*[System[(EventREcordID=$(EventID)]]" /f:xml
次に、アラートを生成したイベントレコードの完全なxmlテキストを使用して必要な操作を実行できます(電子メールの送信、xmlの解析など)。
たとえば、タスクで次のアクションを定義して、イベントxmlをディスクに書き込むことができます。
<Exec>
<Command>powershell.exe</Command>
<Arguments>start-transcript -path C:\alertlog.log -append; add-content -path C:\output.txt -value (wevtutil qe "$(Channel)" /q:"*[System[(EventRecordID=$(EventID))]]" /f:xml); stop-transcript;</Arguments>
</Exec>
参照されているブログ投稿について詳しく説明します。