Как заставить TaskScheduler завершиться с ошибкой, когда задача возвращает результат, отличный от 0

7400
Pablo Montilla

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

Есть ли способ сообщить планировщику задач, что задача не удалась?

14
Привет, Пабло, нам нужно больше информации. Например, как / что запускает планировщик задач? Пакетный файл, EXE, что-то еще? Это резервная копия Windows, с которой вы имеете дело? Что вы пробовали? Ƭᴇcʜιᴇ007 13 лет назад 0
Я использую программу wbadmin для запуска резервного копирования, но у меня та же проблема с командным файлом с одним оператором 'exit 1'. TaskScheduler содержит код ошибки, но сообщает о том, что задача успешно выполнена. Pablo Montilla 13 лет назад 1
То есть сам планировщик заданий показывает ненулевой код выхода? Ƭᴇcʜιᴇ007 13 лет назад 0
Да, но сообщает о том, что задание выполнено успешно. Я понял, что, возможно, он сообщает, что он может выполнить задачу, а не то, что сама задача не удалась, но не кажется очень полезной. Pablo Montilla 13 лет назад 3
Смотрите также http://stackoverflow.com/questions/16969500/how-do-i-notify-windows-task-scheduler-when-my-application-fails Michael Freidgeim 7 лет назад 0
Я отправил предложение в MS Feedback Hub [Планировщик задач Windows не проверяет код выхода] (http://aka.ms/a5p0w2). Вы можете проголосовать за него (ссылка работает только на Win10) Michael Freidgeim 7 лет назад 0

2 ответа на вопрос

3
Shannon Wagner

Если планировщик задач успешно запускает задачу и запущенная программа завершает работу, то с точки зрения планировщика задач это был успех (т. Е. Ничего плохого не произошло, как неверные учетные данные пользователя при запуске программы).

Обычно, если вы хотите отслеживать что-то плохое, что произошло во время запуска программы, вы можете либо заставить программу отправить какое-либо предупреждение (например, по электронной почте или путем входа в файл, который вы просматриваете позже), либо настроить другую программу на отслеживать что-то о запуске программы, что может указывать на то, произошла ли ошибка.

Какого рода уведомление об ошибке вы пытаетесь получить? Вы делаете ручную проверку, но просто пытаетесь сделать ошибку более заметной? Или у вас есть другая программа мониторинга на наличие ошибок?

Тем не менее, я думаю, что неправильно отказывать и не сообщать (или, по крайней мере, давать возможность сообщить) неудачу выполненной задачи. Спасибо! Pablo Montilla 12 лет назад 2
Я согласен, что было бы полезно, если бы планировщик задач мог определить код завершения и отправить электронное письмо на основе результата. Но я не верю, что в этом есть такая особенность. Вы пытаетесь получить уведомление по электронной почте? Может быть, вы могли бы включить запуск wbadmin в скрипт VBScript или PowerShell, который бы определял код выхода и что-то с ним делал? Shannon Wagner 12 лет назад 1
Да, это возможно. Это тоже работает ...;) Надеюсь, MS подумает, что это что-то полезное, чтобы добавить в Windows 8. Pablo Montilla 12 лет назад 1
Это поразительно для меня - в планировщике заданий есть все эти опции для настройки перезапуска действия в случае его сбоя, но он даже не проверяет, возвращает ли действие код ошибки. Заставляет меня задуматься, что же на самом деле представляет собой «провал» для Планировщика заданий. mackenir 11 лет назад 6
В свете этого ответа я должен спросить: запускает ли планировщик задач повторную попытку на основе кода выхода? jpmc26 8 лет назад 0
3
schulle877

Можно «перезапустить» задачу, если она не удалась.

  1. Используйте следующий код в пакетном скрипте для создания события системной ошибки:

    eventcreate / ID 100 / SO "Ваше имя сценария" / L APPLICATION / T ERROR / D "Причина вашего отказа"

  2. Создайте новую задачу с триггером, который отслеживает системные события и фильтрует для категории и идентификатора, который вы только что добавили в пакет. Действие этой задачи снова - партия. Эта задача должна быть отложена на одну минуту, чтобы один и тот же пакет не запускался дважды!

Будьте осторожны, чтобы не создавать бесконечный цикл.

Надеюсь, это поможет!

Мне нравится этот подход :) DavidPostill 8 лет назад 0

Похожие вопросы