2009-08-26 4 views
21

Je travaille avec Windows 7 et j'ai une application qui renvoie zéro (0x0) en cas de succès et un (0x1) en cas d'erreur.Comment Windows Task Scheduler dans Win7 reconnaît-il une tâche échouée?

J'ai prévu cette application en utilisant Windows Task Scheduler. J'ai coché les cases d'option "Si la tâche échoue, redémarrez chaque" et "Tentative de redémarrage jusqu'à:".

Je pensais qu'un code de retour différent de zéro de l'application serait suffisant pour déclencher le redémarrage de la tâche après l'intervalle donné. Mais rien ne se passe.

Des idées sur ce qui pourrait être le problème? J'ai essayé de google mais je n'ai rien trouvé de pertinent.

Répondre

6

J'ai rencontré le même problème sur un planificateur de tâches Windows Windows Server. L'action retour un code non nul, mais le planificateur considère la tâche terminée:

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

Je l'ai trouvé sur le web une seule réponse:

Le Planificateur de tâches de Windows ne examinezle code de sortie ou toutes les autres valeurs lorsque votre tâche se termine. Vous devez gérer toute erreur de traitement dans votre propre script ou programme.

... dans ce document: www.onlinetoolworks.com/docs/winTaskSched.doc

Je pense maintenant que la seule façon de résoudre ce problème peut être d'utiliser tâche déclenchement sur événement. J'étudie.

Cordialement,

Olivier.

+0

Je n'ai pas réussi à le faire fonctionner avec le déclenchement de tâche sur l'événement. – Olivier

+0

J'ai soumis une suggestion à MS Feedback Hub [Windows Task Scheduler n'examine pas le code de sortie] (http://aka.ms/a5p0w2). Vous pouvez voter pour cela (lien fonctionne sur Win10 seulement) –

3

Vous pouvez,

  1. pour activer l'historique annexe (si pas déjà)
  2. sur une histoire « Action réalisée » clic droit « ci-joint la tâche à cet événement ..."
  3. Définir un filtre personnalisé comme celui-ci:

    * [système [(EventID = 201)]] et * [EventData [Data [@ Name = 'ResultCode'] = '1']]

Profitez

Tilo

utilisé sur Win 2008 R2 (Exchange en tant que serveur de messagerie)

+1

Salut Tilo, je suis aux prises avec le même problème et j'ai essayé votre technique de filtre personnalisé, mais l'événement continue à tirer. J'en ai besoin de tirer seulement si souvent et seulement quelques fois. Pourriez-vous développer un peu la solution proposée – Johannes

10

Créer une nouvelle tâche et définir la requête d'événement personnalisé comme celui-ci:

<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> 

Définissez les paramètres avancés de déclenchement pour retarder la tâche pendant une période de temps comme 15 minutes.

Configurer l'action de la nouvelle tâche pour démarrer un programme:

Programme/script:

schtasks 

Ajouter arguments:

/Run /TN "\YOUR TASK NAME HERE" 

Ce programmera l'original tâche à exécuter à nouveau 15 minutes après qu'un code de résultat différent de zéro a été enregistré dans l'événement.

+1

Valid et fonctionne sous Windows 10. Il est à noter que cette solution est une tâche planifiée supplémentaire configurée pour surveiller les exécutions échouées (retours non nuls) de sorte que tout script exécuté dans la tâche d'origine devrait envoyer les bons codes de retour. Souvenez-vous de manière cruciale que vous devez définir un délai d'au moins une minute et que vous devez implémenter une sécurité intégrée pour empêcher le script d'origine de s'exécuter à jamais. Encore une bonne réponse, bravo. – Lewis

+1

Attendez, est-ce que cela suffit de configurer un déclencheur personnalisé pour déclencher à nouveau la tâche sur un code de sortie différent de zéro? – jpmc26

Questions connexes