1

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>
4

1 に答える 1

1

バグではないと思います。私はそれを解決するためにさまざまな属性を使用しました。タスクと EventID。イベント履歴の列が XPath 構文の名前と一致しません。「EventID」は(「タスク」とともに)機能しますが、結果コードが記載されていない場合のみです。そのため、タスク マネージャーにバグがある可能性が非常に高いです。しかし、これは良い回避策です。

<QueryList>
  <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
    <Select Path="Microsoft-Windows-TaskScheduler/Operational">

    *[
        System
        [
            Provider[@Name='Microsoft-Windows-TaskScheduler'] 
            and (Level=0 or Level=1 or Level=2 or Level=3 or Level=4 or Level=5) and (Task = 103 or Task = 203)
        ]       
        or
        System
        [
            Provider[@Name='Microsoft-Windows-TaskScheduler'] 
            and (Level=0 or Level=1 or Level=2 or Level=3 or Level=4 or Level=5) and (Task = 102)
        ]       
    ]

    and 

    *[
        EventData
        [
            Data
            [
                @Name='TaskName'
            ]='\task1_execute_program'
        ]
    ]

    </Select>
  </Query>
</QueryList>
于 2012-06-11T23:39:53.220 に答える