web-dev-qa-db-fra.com

Demander au planificateur de tâches Windows de m'alerter en cas d'échec

J'ai un script automatisé qui extrait les sauvegardes de mon site Web sur mon ordinateur local. Ce script pourrait échouer. une fois mon serveur en panne, une autre fois, j'ai accidentellement déplacé mon script.

Comment faire en sorte que le planificateur de tâches Windows me dise que le script échoue (ou ne s'exécute pas/n'est pas trouvé)?

Je me moque de savoir si une invite apparaît, un courrier électronique ou quelque chose qui apparaît sur mon bureau. Je veux être averti si quelque chose ne va pas. Sur mon serveur, crontab m'envoie des informations sur les erreurs, ce qui est excellent. Je veux quelque chose comme ça sur mon ordinateur local Windows 7.

65
user3109

Lorsqu'une tâche planifiée ne parvient pas à démarrer, un événement est écrit dans le journal des événements TaskScheduler :

Remarque: Le journal du planificateur de tâches se trouve à l'adresse (sous Outils d'administration).

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

enter image description here

Windows vous permet de déclencher les tâches planifiées pour démarrer lorsque divers événements se produisent, par exemple:

  • moment de la journée
  • démarrage du système
  • utilisateur en ligne
  • événement enregistré dans le journal des événements

Fort de ces connaissances, vous pouvez créer une tâche planifiée qui s'exécute lorsque votre tâche échoue:

enter image description here

L'action action de cette tâche planifiée peut ensuite être définie sur un élément qui vous envoie une alerte - selon votre choix de méthodes (par exemple, déclenche un arrêt). Vous voudrez peut-être simplement envoyer un e-mail:

enter image description here

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

  • Journal: Système
  • Source: Tcpip
  • ID de l'événement: 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. N'oubliez pas que l'ID d'événement n'est pas spécifique à une tâche. Toute tâche générant l'événement 203 - Echec du démarrage de l'action déclenchera cette tâche.

86
Ian Boyd

Voici mon script pour me prévenir lorsque mon travail 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 = "[email protected]"
    $Pass = ConvertTo-SecureString -String "myPassword" -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PSCredential $User, $Pass
################################################################################

$From = "Alert Scheduled Task <[email protected]>"
$To = "Me Gmail <[email protected]>"
$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
}
11
Hans Falk

Jetez un coup d'oeil à 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 s'il a été déplacé, vous en serez averti. Vous pouvez être averti par email, SMS, appel téléphonique, messagerie instantanée et Twitter. Cela fonctionnera pour tout système d'exploitation. C'est comme Pingdom mais pour les scripts et les tâches en arrière-plan.

7
Bienvenido David