我需要在 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 中的 Action 程序从“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>