我想创建一个Windows计划任务来通知我每次在特殊文件夹中的其他计划任务失败。为此,我设置了一个计划任务,使用自定义事件过滤器在触发器上运行“在事件上”。XPath查询计划任务
当计划任务的结果代码不是0(即任务失败)时,我想执行一些操作(发送电子邮件)。要做到这一点,我已经设置了以下内容作为我的自定义XML/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)]]</Select>
</Query>
</QueryList>
的* [系统[(事件ID = 201)]]查看是否在事件日志的事件ID为201(动作完成) 。
的* [EVENTDATA [(数据[@名称= “的ResultCode”]!= 0)]]检查是否结果的代码是不是0(失败)
现在这里是我的设置。我的计划任务的子集,在Windows任务调度的子文件夹:
-> Task Scheduler
-> Task Scheduler Library
-> XYZ
-> Task 1
-> Task 2
-> ...
我只希望我的新任务的通知,通知我这个\ XYZ \子文件夹下的任务失败。
下面是从Windows事件日志,例如XML输出,将有任务名称\ XYZ \ TaskNameHere
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-TaskScheduler" Guid="{de7b24ea-73c8-4a09-985d-5bdadcfa9017}" />
<EventID>201</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>201</Task>
<Opcode>2</Opcode>
<Keywords>0x8000000000000000</Keywords>
<TimeCreated SystemTime="2012-04-02T13:51:41.708Z" />
<EventRecordID>385206</EventRecordID>
<Correlation ActivityID="{EC12AB2E-C049-4AF5-9FAB-4540F2B3AD83}" />
<Execution ProcessID="2580" ThreadID="4960" />
<Channel>Microsoft-Windows-TaskScheduler/Operational</Channel>
<Computer>[email protected]</Computer>
<Security UserID="S-1-5-18" />
</System>
<EventData Name="ActionSuccess">
<Data Name="TaskName">\XYZ\Task Name Here</Data>
<Data Name="TaskInstanceId">{EC12AB2E-C049-4AF5-9FAB-4540F2B3AD83}</Data>
<Data Name="ActionName">C:\SomeProgram.exe</Data>
<Data Name="ResultCode">3762504530</Data>
</EventData>
</Event>
这里是我已经试过的XPath,但它不工作,并给了我一个解析错误。
<Select Path="Microsoft-Windows-TaskScheduler/Operational">*[System[(EventID=201)]] and *[EventData[(Data[@Name="ResultCode"]!=0)]] and *[EventData[(Data[@Name="TaskName" and contains(text(),'\XYZ\')])]]</Select>
任何想法?
我试过你提供的XML上的XPath,它在结构上是合理的并且返回“True”。你计划这些任务的基础上返回1或0,而不是真/假?如果是的话,你可以添加一个数字()换行到xpath。 – JWiley 2012-04-02 16:43:07
如果我的XPath返回true,即EventID = 201和ResultCode!= 0,并且TaskName以\ XYZ \开头,那么我想发送一封电子邮件 – 2012-04-02 18:41:07
对,并且我说我不相信它是您的XPath ,因为你已经为给定的XML返回了True。所以我认为它与其他事情有关,可能是你为了创建事件而检查的价值。 – JWiley 2012-04-02 19:23:01