1

У меня есть следующий скрипт .bat:

set /a num=%random% %%2
exit /b %num%

Я хотел бы выполнить этот пакетный сценарий в планировщике задач Windows таким образом, чтобы при коде завершения 1 планировщик задач отправлял электронное письмо о том, что сценарий не выполнен.

Я могу создать другую задачу, которая отслеживает события, но я не вижу никакой разницы в событиях, основываясь на коде завершения сценария bat.

Вот как выглядит история для кода выхода = 0 и = 1.

Разница между exit 0 и exit 1 состоит в том, что в eventId = 201 есть примечание, в котором говорится, что это был за код выхода.

1 ответ1

2

Проблема с планировщиком заданий заключается в том, что независимо от того, какой код завершения возвращается, задача всегда регистрирует событие с идентификатором 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" для фильтрации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .