Я пытаюсь создать запланированную задачу Windows, чтобы уведомить меня каждый раз, когда сработала какая-либо другая запланированная задача в специальной папке. Для этого я настроил запланированную задачу для запуска с помощью триггера «В случае события» с использованием фильтра пользовательских событий.XPath Query для запланированной задачи
Я хочу выполнить какое-либо действие (отправить электронное письмо), когда код результата запланированной задачи НЕ 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>
The * [Система [(EVENTID = 201)]] проверяет, если EventID журнала событий было 201 (Выполнена) ,
The * [EventData [(Data [@ Name = "ResultCode"]! = 0)]] проверяет, если код результата НЕ был 0 (Failure)
Теперь Вот моя установка. У меня есть подмножество запланированных задач в подпапке под планировщиком задач Windows:
-> Task Scheduler
-> Task Scheduler Library
-> XYZ
-> Task 1
-> Task 2
-> ...
Я только хочу, чтобы моя новая задача уведомления, чтобы уведомить меня за отказы задач в рамках этой \ XYZ \ подпапка.
Вот выходной пример XML из журналов событий Windows, который будет иметь имя задачи \ 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>
Любые идеи?
Я пробовал ваш XPath на предоставленном XML, он структурно звучал и возвращался «True». Планируете ли вы эти задачи на основе возврата 1 или 0, а не True/False? Вы можете добавить обход числа() в xpath, если это так. – JWiley
Если мой XPath возвращает true, то есть EventID = 201 и ResultCode! = 0, а TaskName начинается с \ XYZ \, тогда я хочу отправить электронное письмо –
Право, и я говорю, что я не верю, что это ваш XPath , потому что то, что у вас есть, возвращает True уже для данного XML. Поэтому я думаю, что это связано с чем-то другим, возможно, значением, которое вы проверяете, чтобы создать событие. – JWiley