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.
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
Windows vous permet de déclencher les tâches planifiées pour démarrer lorsque divers événements se produisent, par exemple:
Fort de ces connaissances, vous pouvez créer une tâche planifiée qui s'exécute lorsque votre tâche échoue:
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:
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:
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.
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
}
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.