2011-02-22 21:15:46 +0000 2011-02-22 21:15:46 +0000
69
69

让Windows任务调度在失败时提醒我。

我有一个自动脚本,可以从我的网站上拉备份到我的本地计算机。这个脚本可能会失败;有一次我的服务器瘫痪了,还有一次我不小心移动了我的脚本。

我如何让Windows任务调度程序告诉我脚本失败了(或者没有运行/没有找到)?

我不在乎是否有提示出现,电子邮件或其他东西出现在我的桌面上。我希望在出现问题时能得到通知。在我的服务器上,crontab会给我发邮件通知错误–这很好。我希望在我的windows 7本地电脑上也有类似的功能。

答案 (3)

89
89
89
2011-02-22 22:13:57 +0000

当计划中的任务无法启动时,事件会被写入TaskScheduler事件日志。

注意:任务调度日志位于(管理工具下)

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

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

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

有了这些知识,你可以创建一个计划任务,当你的计划任务失败时,这个任务就会运行。

这个计划任务的action可以被设置为向你发送警报的东西–以你选择的方法(例如,触发关机)。你可能只是想让它发送一封邮件。

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

  • Log: System
  • Source: Tcpip
  • Event ID: 4198

一个预定的任务在这个事件上触发,并运行一个程序来告诉你这个事件并修复它。请记住,事件ID并不只针对一个任务。任何产生事件203 - Action failed to start的任务都会触发这个任务。

14
14
14
2016-01-15 20:59:39 +0000

下面是我的脚本,当我的备份任务的值大于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
}
```。
7
7
7
2012-06-01 13:42:17 +0000

看看 PushMon 。你可以创建一个PushMon URL,它将在你的脚本结束时被调用。如果你的脚本因为服务器宕机或脚本被移动而无法运行,你会得到通知。你可以通过电子邮件、短信、电话、IM和Twitter获得通知。这将适用于任何操作系统。这就像Pingdom,但对于脚本和后台任务。