我有一个自动脚本,可以将备份从我的网站提取到我的本地计算机。这个脚本可能会失败;一旦我的服务器宕机,又一次我不小心移动了我的脚本。
如何让 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 地址冲突时,会将事件写入日志:
计划任务在此事件上触发,并运行一个程序来告诉您它并修复它。请记住,事件 ID 不仅仅特定于一项任务。任何生成事件 203 - Action failed to start 的任务都将触发此任务。
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)
| 归档时间: |
|
| 查看次数: |
205282 次 |
| 最近记录: |