Проблема с планировщиком заданий заключается в том, что независимо от того, какой код завершения возвращается, задача всегда регистрирует событие с идентификатором 201 - Действие завершено ... что является правильным ... несмотря ни на что, задание завершено, даже если задание, которое было выполнено, не выполнено изнутри ,
Если посмотреть дальше, нажав на вкладку «Подробности» при просмотре зарегистрированного события, мы увидим, что ResultCode
в EventData
действительно настроен правильно. Так что фильтровать это через графический интерфейс - это просто?.... ну нет ... Нет фильтра вне EventID. Теперь нам нужно написать собственный фильтр событий для запуска на основе ResultCode
. Нам нужен XML-запрос XPath:
<QueryList>
<Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
<Select Path="Microsoft-Windows-TaskScheduler/Operational">
*[System[(Level=4 or Level=0) and (EventID=201)]]
and
*[EventData[Data[@Name='ResultCode'] and (Data='2147942401')]]</Select>
</Query>
</QueryList>
Итак, чтобы разбить его, мы хотим:
Event log: Microsoft-Windows-TaskScheduler/Operational
Event Level: 4 or 0 = Information
Event ID: 201
And
Event Data: ResultCode = 2147942401
Если мы установили неверный код выхода равным 1, почему ResultCode = 2147942401
? потому что он на самом деле возвращает 0x1
который является шестнадцатеричным 0x80070001
что равно десятичному 2147942401
. Таким образом, чтобы получить код результата "Correct", вам нужно найти ваше событие и щелкнуть на вкладке Details, а затем найти ResultCode "Correct" для фильтрации.