2011-02-22 21:15:46 +0000 2011-02-22 21:15:46 +0000
69
69

Faire en sorte que le planificateur de tâches de Windows m'alerte en cas d'échec

J'ai un script automatisé qui extrait les sauvegardes de mon site web vers mon ordinateur local. Ce script peut échouer ; une fois que mon serveur est en panne, une autre fois je déplace accidentellement mon script.

Comment puis-je faire en sorte que le planificateur de tâches de Windows me dise que le script échoue (ou qu'il ne fonctionne pas/n'est pas trouvé) ?

Je me fiche qu'une invite apparaisse, qu'un e-mail ou quelque chose apparaisse sur mon bureau. Je veux être averti si quelque chose se passe mal. Sur mon serveur, crontab m'envoie un courriel au sujet des erreurs - ce qui est très bien. Je veux quelque chose comme ça sur mon ordinateur local sous Windows 7.

Réponses (3)

89
89
89
2011-02-22 22:13:57 +0000

Lorsqu'une tâche planifiée ne démarre pas, un événement est inscrit dans le journal des événements du TaskScheduler :

Note: Le journal du planificateur de tâches est situé à (sous Outils d'administration)

Computer Management
    System Tools
       Event Viewer
          Application and Services Logs
             Microsoft
                Windows
                   Task Scheduler
                      Operational

Windows vous permet de déclencher des tâches planifiées pour démarrer lorsqu'une variété d'événements se produisent, par exemple

  • heure de la journée
  • démarrage du système
  • connexion de l'utilisateur
  • événement enregistré dans le journal des événements

Armé de cette connaissance, vous pouvez créer une tâche planifiée qui s'exécute lorsque votre tâche planifiée échoue :

Cette tâche programmée peut ensuite être configurée pour vous envoyer une alerte - selon la méthode de votre choix (par exemple, en déclenchant un arrêt). Vous pouvez aussi simplement lui demander d'envoyer un e-mail :

C'est ainsi que Windows gère tout. Vous pouvez voir de nombreuses tâches de diagnostic qui se déclenchent sur un événement apparaissant dans le journal. Par exemple, lorsqu'un conflit d'adresse IP est détecté, un événement est écrit dans le journal :

  • Log: Système
  • Source: Tcpip
  • Event ID: 4198

Une tâche planifiée se déclenche sur cet événement, et exécute un programme pour vous en informer et le corriger. Gardez à l'esprit que l'ID d'événement n'est pas spécifique à une seule tâche. Toute tâche qui génère l'événement 203 - Action non démarrée, déclenchera cette tâche.

14
14
14
2016-01-15 20:59:39 +0000

Voici mon script pour m'alerter lorsque ma tâche de sauvegarde a une valeur supérieure à 0.

$ScheduledTaskName = "Hans\Backup"
$Result = (schtasks /query /FO LIST /V /TN $ScheduledTaskName | findstr "Result")
$Result = $Result.substring(12)
$Code = $Result.trim()

If ($Code -gt 0) {
    $User = "mymail@gmail.com"
    $Pass = ConvertTo-SecureString -String "myPassword" -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PSCredential $User, $Pass
################################################################################

$From = "Alert Scheduled Task <mymail@gmail.com>"
$To = "Me Gmail <mymail@gmail.com>"
$Subject = "Scheduled task 'Backup' failed"
$Body = "Error code: $Code"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"

Send-MailMessage -From $From -to $To -Subject $Subject `
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
-Credential $Cred
}
7
7
7
2012-06-01 13:42:17 +0000

Jetez un coup d'œil à PushMon . Vous pouvez créer une URL PushMon qui sera appelée à la fin de votre script. Si votre script ne s'exécute pas parce que le serveur était en panne ou que le script a été déplacé, vous en serez averti. Vous pouvez être notifié par e-mail, SMS, appel téléphonique, messagerie instantanée et Twitter. Cela fonctionnera pour n'importe quel système d'exploitation. C'est comme Pingdom mais pour les scripts et les tâches de fond.