Jak spowodować niepowodzenie TaskScheduler, gdy zadanie zwróci wynik inny niż 0

16

Mam zadanie tworzenia kopii zapasowej, które kończy się niepowodzeniem z niezerowym wynikiem, ale Harmonogram zadań mówi, że poprawnie wykonał zadanie.

Czy jest jakiś sposób, aby powiedzieć Harmonogramowi zadań, że zadanie nie powiodło się?

Pablo Montilla
źródło
Cześć Pablo, Potrzebujemy więcej informacji. Jak / jak uruchamia się harmonogram zadań? Plik wsadowy, plik EXE, czy coś jeszcze? Czy masz do czynienia z tą kopią zapasową systemu Windows? Czego próbowałeś?
ᴇcʜιᴇ007
1
Korzystam z programu wbadmin, aby rozpocząć tworzenie kopii zapasowej, ale mam ten sam problem z plikiem wsadowym z pojedynczą instrukcją „exit 1”. TaskScheduler zawiera kod błędu, ale zgłasza zadanie jako pomyślnie uruchomione.
Pablo Montilla,
Więc sam Harmonogram zadań pokazuje niezerowy kod wyjścia?
Ƭᴇcʜιᴇ007
3
Tak, ale zgłasza zadanie jako wykonane pomyślnie. Rozumiem, że być może zgłasza, że ​​może wykonać zadanie, a nie, że samo zadanie zakończyło się niepowodzeniem, ale nie wydaje się bardzo przydatne.
Pablo Montilla
Zobacz także stackoverflow.com/questions/16969500/...
MiFreidgeim SO-przestań być zły

Odpowiedzi:

4

Jeśli Harmonogram zadań pomyślnie uruchomi zadanie, a uruchomiony program zakończy działanie, to z punktu widzenia Harmonogramu zadań zakończyło się ono sukcesem (tzn. Nic złego się nie stało, jak nieudane poświadczenie użytkownika uruchamiające program).

Zwykle, jeśli chcesz monitorować coś złego, co wydarzyło się podczas uruchamiania programu, albo program wysyła ostrzeżenie (np. E-mailem lub logując się do pliku, który później przeglądasz), albo konfiguruje inny program, aby monitoruj coś o przebiegu programu, co może wskazywać, czy wystąpił błąd.

Jakiego rodzaju powiadomienie o błędzie próbujesz uzyskać? Czy dokonujesz ręcznej oceny, ale po prostu chcesz, aby błąd był bardziej zauważalny? A może masz inny program monitorujący błędy?

Shannon Wagner
źródło
2
Nadal uważam, że źle jest nie udać się i nie zgłosić (lub przynajmniej dać możliwość zgłoszenia) niepowodzenia wykonanego zadania. Dzięki!
Pablo Montilla,
1
Zgadzam się, że użyteczne byłoby, gdyby Harmonogram zadań mógł wykryć kod wyjścia i wysłać wiadomość e-mail na podstawie wyniku. Ale nie wierzę, że ma tę funkcję. Czy próbujesz otrzymać powiadomienie e-mail? Może opakowanie uruchomienia wbadmin w skrypcie VBScript lub PowerShell, który wykryłby kod wyjścia i coś z nim zrobiłby, byłby dla ciebie możliwością?
Shannon Wagner
1
Tak, to jest możliwość. To też działa ...;) Mam nadzieję, że stwardnienie rozsiane pomyśli, że to jest coś przydatnego do dodania do Windows 8.
Pablo Montilla
6
Jest to dla mnie oszałamiające - Harmonogram zadań ma wszystkie opcje konfigurowania ponownego uruchomienia akcji w przypadku „niepowodzenia”, ale nawet nie sprawdza, czy akcja zwraca kod błędu. Zastanawiam się, co do cholery stanowi „awarię” harmonogramu zadań.
mackenir
W świetle tej odpowiedzi muszę zapytać: czy Harmonogram zadań w ogóle wyzwala ponawianie na podstawie kodu wyjścia?
jpmc26
5

Możliwe jest „zrestartowanie” zadania, jeśli się nie powiedzie.

  1. Użyj następującego kodu w skrypcie wsadowym, aby utworzyć zdarzenie błędu systemu:

    eventcreate / ID 100 / SO „Twoja nazwa skryptu” / L APPLICATION / T ERROR / D „Twoja przyczyna niepowodzenia”

  2. Utwórz nowe zadanie z wyzwalaczem, który monitoruje zdarzenia systemowe i filtruje kategorię i identyfikator, które właśnie dodałeś w partii. Czynnością tego zadania jest ponownie partia. To zadanie należy opóźnić o jedną minutę, aby ta sama partia nie została uruchomiona dwukrotnie!

Uważaj, aby nie stworzyć nieskończonej pętli.

Mam nadzieję, że to pomaga!

schulle877
źródło
Lubię to podejście :)
DavidPostill