让 Windows 任务计划程序在失败时提醒我

80 windows-7 task-scheduler

我有一个自动脚本,可以将备份从我的网站提取到我的本地计算机。这个脚本可能会失败;一旦我的服务器宕机,又一次我不小心移动了我的脚本。

如何让 Windows 任务计划程序告诉我脚本失败(或未运行/未找到)?

我不在乎是否出现提示、电子邮件或出现在我桌面上的东西。如果出现问题,我想收到通知。在我的服务器上,crontab 会向我发送有关错误的电子邮件 - 这很棒。我想在我的 Windows 7 本地计算机上使用类似的东西。

Ian*_*oyd 98

当计划任务启动失败时,会在TaskScheduler事件日志中写入一个事件:

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

 Computer Management
    System Tools
       Event Viewer
          Application and Services Logs
             Microsoft
                Windows
                   Task Scheduler
                      Operational
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Windows 允许您在发生各种事件时触发计划任务启动,例如:

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

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

在此处输入图片说明

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

在此处输入图片说明

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

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

计划任务在此事件上触发,并运行一个程序来告诉您它并修复它。请记住,事件 ID 不仅仅特定于一项任务。任何生成事件 203 - Action failed to start 的任务都将触发此任务。

  • 实际上,如果第二个任务失败,它将启动将失败的第二个任务,这将启动将失败的第二个任务,这将启动第二个任务,这将......你明白了。我刚刚发现这一点很困难=/ (14认同)
  • @WilliamJackson 创建一个关闭机器的事件。那时肯定有人会注意到问题。 (8认同)
  • 这不会在任务*失败*时提醒您,只有在它*无法启动*时才会提醒您。不完全一样的东西。 (8认同)
  • 如果第二个任务失败了怎么办!?!? (7认同)
  • 这个答案现在已经过时了。我检查了 Windows 10 和 Windows Server 2012 R2,“发送电子邮件操作已被弃用”。 (5认同)
  • @JohnHargrove 你现在应该执行一个 powershell 脚本。所涉及的步骤非常复杂,甚至不值得学习。 (3认同)
  • 您可以从事件日志(203 和 103)中获得 *event id*。您可以在屏幕截图(203 和 103)中看到事件 ID。或者我可以告诉你事件 ID:203 和 103。 (2认同)
  • 以下是事件 ID 列表的一些链接,以便您可以监视其他类型的故障:http://technet.microsoft.com/en-us/library/dd315533%28v=ws.10%29.aspx 和 http:// /technet.microsoft.com/en-us/library/dd363625%28v=ws.10%29.aspx (2认同)

Han*_*alk 16

这是我的脚本,当我的备份作业的值大于 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
}
Run Code Online (Sandbox Code Playgroud)


Bie*_*vid 7

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

  • 由于脚本已移动且未调用 URL,因此您将收到警报。 (3认同)
  • 试图访问他们的网站;具有讽刺意味的是,它似乎下降了.. (3认同)