使Windows Task Scheduler在失败时提醒我


65

我有一个自动脚本,可将备份从网站拉到本地计算机。该脚本可能会失败;一旦服务器关闭,又一次我不小心移动了脚本。

如何使Windows Task Scheduler告诉我脚本失败(或未运行/未找到)?

我不在乎是否出现提示,电子邮件或桌面上显示的内容。如果出现问题,我想得到通知。在我的服务器上,crontab向我发送有关错误的电子邮件-很棒。我想要在Windows 7本地计算机上执行类似操作。


发现任务计划程序事件ID至少为mnaoumov.wordpress.com/2014/05/15/task-scheduler-event-ids

Answers:


87

如果计划的任务无法启动,则会将事件写入TaskScheduler事件日志:

注意:任务计划程序日志位于(在“管理工具”下)

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

在此处输入图片说明

Windows使您可以触发计划的任务,以在发生各种事件时启动,例如:

  • 一天中的时间
  • 系统启动
  • 用户登录
  • 事件记录在事件日志中

有了这些知识,您就可以创建一个计划任务,该任务在计划任务失败时运行:

在此处输入图片说明

然后,可以将此计划任务的操作设置为向您发送警报的内容-在您选择的方法中(例如触发关闭)。您可能只希望它发送电子邮件:

在此处输入图片说明

这就是Windows处理所有内容的方式。您会看到许多诊断任务,它们会在日志中出现时触发事件。例如,当检测到IP地址冲突时,将事件写入日志:

  • 日志:系统
  • 资料来源: Tcpip
  • 赛事ID: 4198

计划任务会在此事件上触发,并运行一个程序来告知您并进行修复。请记住,事件ID并非仅针对一项任务。生成事件203-操作无法启动的任何任务都将触发此任务。


2
您可以从事件日志中获取事件ID(203和103)。您可以在屏幕快照(203和103)中看到事件ID。或者,我可以告诉你的事件ID的203和103
伊恩·博伊德

5
如果第二项任务失败,该怎么办!
威廉·杰克逊

3
@WilliamJackson创建一个关闭计算机的事件。那时肯定会有人发出警报。
伊恩·博伊德

11
实际上,如果第二个任务失败,它将启动第二个任务,该第二个任务将失败,这将启动第二个任务,该第二个任务将失败,这将启动第二个任务,这将...您明白了。我刚刚发现这很困难= /
Rob Penridge

6
如果一个任务失败,它不会提醒您,仅当它无法启动时。不太一样。
jwg 2013年

11

这是我的脚本,当我的备份作业的值大于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
}

这是一个很好的选择,因为当前选择的答案使用了不推荐使用的Windows功能。
约翰·哈格罗夫

请记住,这是专为使用Windows的英语用户设计的解决方案。必须根据Windows中设置的用户语言更改“ findstr”的参数。
Eda190

7

看一下PushMon。您可以创建一个PushMon URL,该URL将在脚本末尾被调用。如果您的脚本由于服务器关闭或脚本被移动而无法运行,则会收到通知。您可以通过电子邮件,短信,电话,IM和Twitter收到通知。这将适用于任何操作系统。这就像Pingdom,但用于脚本和后台任务。


1
如果将其添加到脚本的末尾,并且脚本丢失(例如,已移动),应该如何调用它?
Bob

3
由于脚本已移动且未调用URL,因此您将收到警报。
Bienvenido David

1
试图访问他们的网站;讽刺的是,这似乎是下来..
艾萨克·克雷曼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.