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


16

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

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


Привет, Пабло, нам нужно больше информации. Например, как / что запускает планировщик задач? Пакетный файл, EXE, что-то еще? Это резервная копия Windows, с которой вы имеете дело? Что вы пробовали?
Ƭᴇcʜιᴇ007

1
Я использую программу wbadmin для запуска резервного копирования, но у меня та же проблема с командным файлом с одним оператором 'exit 1'. TaskScheduler содержит код ошибки, но сообщает о том, что задача успешно выполнена.
Пабло Монтилья

То есть сам планировщик заданий показывает ненулевой код выхода?
Ƭᴇcʜιᴇ007

3
Да, но сообщает о том, что задание выполнено успешно. Я понимаю, что, возможно, он сообщает, что может выполнить задачу, а не что сама задача не удалась, но не кажется очень полезной.
Пабло Монтилья

Ответы:


4

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

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

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


2
Тем не менее, я думаю, что неправильно отказывать и не сообщать (или, по крайней мере, давать возможность сообщить) о неудаче выполненной задачи. Благодарность!
Пабло Монтилья

1
Я согласен, что было бы полезно, если бы планировщик задач мог определить код выхода и отправить электронное письмо на основе результата. Но я не верю, что в этом есть такая особенность. Вы пытаетесь получить уведомление по электронной почте? Может быть, вы могли бы включить запуск wbadmin в скрипт VBScript или PowerShell, который бы определял код выхода и что-то с ним делал?
Шеннон Вагнер

1
Да, это возможно. Это тоже работает ...;) Надеюсь, MS подумает, что это что-то полезное, чтобы добавить в Windows 8.
Пабло Монтилья

6
Это поразительно для меня - в планировщике заданий есть все эти опции для настройки перезапуска действия в случае его сбоя, но даже не проверяется, возвращает ли действие код ошибки. Заставляет меня задуматься, что же на самом деле представляет собой «провал» для Планировщика заданий.
Маккенир

В свете этого ответа я должен спросить: запускает ли планировщик задач повторную попытку на основе кода выхода?
jpmc26

5

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

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

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

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

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

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


Мне нравится такой подход :)
DavidPostill
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.