Machen Sie Windows Task Scheduler warnt mich auf fail

Ich habe ein automatisiertes Skript, das Backups von meiner Website auf meinen lokalen Computer zieht. Dieses Skript könnte fehlschlagen; Sobald mein Server ausgefallen war, habe ich mein Skript ein anderes Mal versehentlich verschoben.

Wie kann ich den Windows-Taskplaner dazu bringen, mir mitzuteilen, dass das Skript fehlschlägt (oder nicht ausgeführt/nicht gefunden wird)?

Es ist mir egal, ob eine Eingabeaufforderung, eine E-Mail oder etwas anderes auf meinem Desktop angezeigt wird. Ich möchte benachrichtigt werden, wenn etwas schief geht. Auf meinem Server sendet crontab mir eine E-Mail über Fehler - was großartig ist. Ich möchte so etwas auf meinem lokalen Windows 7-Computer.

Author: Eliran Malka, 2011-02-22

4 answers

Wenn eine geplante Aufgabe nicht gestartet werden kann, wird ein Ereignis in das Ereignisprotokoll TaskScheduler geschrieben:

Hinweis: Das Taskplaner-Protokoll befindet sich unter (unter Administrative Tools)

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

geben Sie hier die Bildbeschreibung ein

Mit Windows können Sie geplante Aufgaben auslösen, die bei einer Vielzahl von Ereignissen gestartet werden, z. B.:

  • Tageszeit
  • Systemstart
  • Benutzeranmeldung
  • ereignis im Ereignisprotokoll aufgezeichnet

, Bewaffnet mit mit diesem Wissen können Sie eine geplante Aufgabe erstellen, die ausgeführt wird, wenn Ihre geplante Aufgabe fehlschlägt:

geben Sie hier die Bildbeschreibung ein

Die Aktion dieser geplanten Aufgabe kann dann auf etwas gesetzt werden, das Ihnen eine Warnung sendet - in Ihrer Wahl der Methoden (z. B. löst ein Herunterfahren aus). Vielleicht möchten Sie nur eine E-Mail senden:

geben Sie hier die Bildbeschreibung ein

So geht Windows mit allem um. Sie können viele Diagnoseaufgaben sehen, die bei einem Ereignis im Protokoll ausgelöst werden. zB wenn eine IP-Adresse Konflikt wird erkannt, wird ein Ereignis in das Protokoll geschrieben:

  • Log: System
  • Quelle: Tcpip
  • Ereignis-ID: 4198

Eine geplante Aufgabe löst dieses Ereignis aus und führt ein Programm aus, um es Ihnen mitzuteilen und es zu beheben. Beachten Sie, dass die Ereignis-ID nicht nur für eine Aufgabe spezifisch ist. Jede Aufgabe, die das Ereignis 203 generiert-Aktion konnte nicht gestartet werden, löst diese Aufgabe aus.

 96
Author: Ian Boyd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-03-31 21:07:44

Hier ist mein Skript, um mich zu warnen, wenn mein Sicherungsauftrag einen größeren Wert als 0 hat.

$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
}
 15
Author: Hans Falk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-01-15 21:03:07

Schauen Sie sich PushMon an. Sie können eine PushMon-URL erstellen, die am Ende Ihres Skripts aufgerufen wird. Wenn Ihr Skript nicht ausgeführt wird, weil der Server ausgefallen ist oder das Skript verschoben wurde, werden Sie benachrichtigt. Sie können per E-Mail, SMS, Anruf, IM und Twitter benachrichtigt werden. Dies funktioniert für jedes Betriebssystem. Dies ist wie Pingdom, aber für Skripte und Hintergrundaufgaben.

 7
Author: Bienvenido David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-06-01 13:42:17

Bearbeiten: Überprüfen Sie die Antwort von Ian Boyd, und wenn Sie die E-Mail-Aktion verwenden, kehren Sie hierher zurück.

Da Ian Boyds ursprüngliche Antwort veröffentlicht wurde, wurde die E-Mail-Aktion im Taskplaner veraltet und schließlich entfernt. Es ist jedoch nicht schwierig, ein Powershell-Skript zu erstellen, das SMTP-E-Mails sendet und stattdessen ausführt. Hier ist ein Beispiel mit Powershell und system.net.mail.smtpClient:

$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$SmtpClient.Host = "mail.yourdomain.com"
$SmtpClient.Port = 587
#$SmtpClient.EnableSsl = $true
$SmtpClient.Credentials = New-Object System.Net.NetworkCredential( "[email protected]", "{pw}" );
$mailmessage.from = ("[email protected]")
$mailmessage.To.add("[email protected]")
$mailmessage.Subject = “Server Alert”
$mailmessage.Body = “Event 103 or 203 detected. This indicates a Scheduled Task has failed.”
$smtpclient.Send($mailmessage)

Bearbeiten Sie die Details nach Bedarf (z. B. "mail.yourdomain.com" und Anmeldeinformationen "[email protected]" und "{pw}"). Möglicherweise müssen Sie mit Port und EnableSsl arbeiten.

Speichern Sie dieses Skript als FailedTaskAlert.ps1 in einem gemeinsamen Ordner, z. B. C:\Users\Public\Documents.

Nun wollen wir das auf eine Aufgabe übertragen.

Verwenden Sie auf der Registerkarte Action die Aktion Start a Program. Geben Sie in Program "powershell.exe " und geben Sie in Add Arguments Ihre PS1-Datei ein, z. B. "C:\Users\Public\Documents\FailedTaskAlert.ps1"

Ich sehe, dass Hans Folk dies auch mit Send-MailMessage aber ich dachte, eine andere Cmdletvariation und eine explizite eine Erklärung, wie das Powershell-Skript mit der Aktion der Aufgabe verbunden werden kann, wäre für andere hilfreich.

Einschränkung: Stellen Sie sicher, dass der gesamte Taskverlauf im rechten Aktionsbereich im Taskplaner aktiviert ist, da sonst keine Ereignisse protokolliert werden. Wenn Sie die Registerkarte Verlauf mit der Bezeichnung "Deaktiviert" sehen, wissen Sie, dass diese Funktion deaktiviert ist.

 2
Author: Jeff Mergler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-17 15:28:52