我正在尝试创建一个Windows定时任务,以便在特定文件夹中的其他计划任务失败时通知我。为此,我设置了一个定时任务,使用“事件触发器”和自定义事件筛选器。当计划任务的结果代码不为0(即任务失败)时,我想执行某些操作(发送电子邮件)。为此,我已经设置了以下内容作为我的自定义XML / XPath:
我只希望我的新通知任务通知我此\\XYZ\\子文件夹下的任务失败情况。
以下是Windows事件日志的示例XML输出,其中将包含任务名称\\XYZ\\TaskNameHere。
这是我尝试过的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>
*[System[(EventID=201)]] 是用于检查事件日志的 EventID 是否为 201(操作已完成)。
*[EventData[(Data[@Name="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>blah@whocares.com</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>
有什么想法吗?