Как диспетчер задач Windows в Win7 распознает неудачную задачу?

Я работаю с Windows 7, и у меня есть приложение, которое возвращает нуль (0x0) при успешном завершении и один (0x1) в ситуациях с ошибками.

Я запланировал это приложение с помощью планировщика задач Windows. Я проверил флажки "Если задача не удалась, перезапустите все" и "Попытка перезагрузки до:".

Я думал, что ненулевой код возврата из приложения будет достаточным для запуска перезапуска задачи после заданного интервала. Но ничего не происходит.

Любые идеи, что может быть проблемой? Я попытался сделать это, но ничего не нашел.

Ответ 1

Создайте новую задачу и установите настраиваемый запрос событий следующим образом:

<QueryList>
  <Query Id="0" Path="Microsoft-Windows-TaskScheduler/Operational">
    <Select Path="Microsoft-Windows-TaskScheduler/Operational">*[System[EventID=201]] and *[EventData[Data[@Name='ResultCode']!='0']] and *[EventData[Data[@Name='TaskName']='\YOUR TASK NAME HERE']]</Select>
  </Query>
</QueryList>

Задайте дополнительные настройки триггера для задержки задачи в течение периода времени, например, 15 минут.

Настройте действие новой задачи для запуска программы:

Программа/script:

schtasks

Добавить аргументы:

/Run /TN "\YOUR TASK NAME HERE"

Это приведет к тому, что исходная задача будет запущена снова через 15 минут после того, как в событии будет зарегистрирован ненулевой код результата.

Ответ 2

Я столкнулся с той же проблемой на планировщике задач Windows 2008 Server Windows Task Scheduler. Действие возвращает ненулевой код, но планировщик рассматривает завершенную задачу:

Task Scheduler successfully completed task "\SET Tasks\Scheduled task [Backup SET Server]" , instance "{...}" , action "C:\Windows\SYSTEM32\cmd.exe" with return code 1.

Я нашел в Интернете только один ответ:

Планировщик задач Windows не проверить код выхода или любой другой значения, когда ваша задача завершается. Вы должен обрабатывать любую обработку ошибок в вашей собственной script или программе.

... в этом документе: www.onlinetoolworks.com/docs/winTaskSched.doc

Итак, теперь я думаю, что единственным способом решения этой проблемы может быть использование запуска задачи при событии. Я расследую.

Привет,

Оливье.

Ответ 3

Вы можете,

  • активировать историю для расписания (если она еще не указана)
  • в истории "Действие завершено" щелкните правой кнопкой мыши "Связанная задача для этого события..."
  • Установите собственный фильтр следующим образом:

      * [System [(EventID = 201)]] и * [EventData [Данные [@Name= 'ResultCode'] = '1']]

Enjoy

Тил

используемый в Win 2008 R2 (Exchange как почтовый сервер)

Ответ 4

Никто не ответил на заглавный вопрос. Кажется, что у планировщика задач нет способа обнаружить сбойную задачу? Конечно, у него должно быть что-то, потому что у него есть возможность перезапустить неудачные задачи!