Windows Server 2008 のタスク スケジューラで解決する必要があるシナリオ:
(#1)タスク A がプログラムを実行しようとする > タスク A が成功し、exe ファイルを実行する > タスク B がタスク A のイベントを調べ、タスク A が正常に実行されたことを受信者に電子メールで送信する。
シナリオ #1 のイベント (参照用のスクリーン ショットの時間のグループに注意してください):
100-Task Started
319-Task Engine received message to start task
110-Task triggered by user
200-Action started
129-Created Task Process
201-Action completed
102-Task completed
(#2)タスク A はプログラムを実行しようとします > タスク A は、exe ファイルが存在しないため、exe ファイルの実行に失敗します > タスク B は、タスク A のイベントを調べ、失敗について受信者に電子メールを送信します。
シナリオ #2 のイベント (参照用のスクリーン ショットの時間のグループに注意してください):
319-Task engine received message to start task
110-Task triggered by user
100-Task Started
200-Action started
203-Action failed to start
103-Action start failed
ここにタスク A のイベントがあります。上から下に読んでください。上記の正しい順序で書き直しました。
動作するシナリオ #1 の XPath クエリを次に示します。シナリオ 2 (失敗メールを送信するタスク) の XPath がわかりません。
<QueryList>
<Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
<Select Path="Microsoft-Windows-TaskScheduler/Operational">
*[System[EventID=201]]
and *[EventData[Data[@Name='ResultCode']='0'
or Data[@Name='ResultCode']='1']]
and *[EventData[Data[@Name='TaskName']='\test_email_task']]
</Select>
</Query>
</QueryList>
=================
更新 2012 年 6 月 8 日 @ 1:55
具体的には、シナリオ 1 は機能しません。そして、シナリオ 2 は機能します。シナリオ 1 については、ResultCode が 2147942402 であるため、システムがイベントをトリガーできないと考えています。これは、Windows がファイルを見つけられなかったことを意味します。
シナリオ #1:
... task2 doesn't send email
... task1 has EventID 103 and ResultCode 2147942402
... task1 has EventID 203 and ResultCode 2147942402
- 2 つのタスクを作成します。
- タスク #1 "task1_execute_program" を呼び出します。"c:\windows\system32\bogus.exe" (無効なプログラム) でプログラムを開くアクションを追加します。
- タスク #2 "task2_send_email_based_on_result_of_task1" を呼び出します。メールを送信するアクションを追加...詳細とSMTPサーバーを入力....イベントに基づいてトリガーを追加....[XML]タブをクリックし、以下のXPathクエリを入力します:
シナリオ #2:
... task2 sends email because it found write.exe
... task1 has EventID 102-Task Completed
- すべてを同じに保ちますが、タスク #1 のアクション プログラムを "c:\windows\system32\bogus.exe" (無効なプログラム) から "c:\windows\system32\write.exe" (有効なプログラム) に変更します。
=====================
<QueryList>
<Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
<Select Path="Microsoft-Windows-TaskScheduler/Operational">
*[System[EventID=203] and
*[EventData[Data[@Name='TaskName']='\task1_execute_program']]]
or
*[System[EventID=102]]
and *[EventData[Data[@Name='TaskName']='\task1_execute_program']]
</Select>
</Query>
</QueryList>