计划任务运行但仅在稍作修改后才启动批处理

时间:2015-08-04 11:03:51

标签: batch-file scheduled-tasks windows-server-2008-r2

我在Windows Server 2008 R2上遇到问题。

我安排了一个使用域帐户在固定时间每天运行的任务,它会启动一个.bat文件,该文件调用传递一些参数的可执行文件。

它工作了几个月,没有任何明显的理由它停止工作:任务历史记录显示任务实际启动,它不报告错误,但可执行文件什么都不做。

我注意到了:

  • 如果我在执行时登录远程桌面,则任务有效。

  • 如果我对任务进行了少量修改(将开始时间更改为1秒)并保存,则即使我未登录,任务也会恢复正常行为。

  • 在同一帐户上运行的同一服务器上的其他类似任务正常运行。

  • 这是第二次在同一台服务器上计划任务出现此问题。

似乎任务中的某些内容已损坏并强制保存会恢复正常操作。

我已经检查过了:

  • 如果手动启动,任务可以正常运行;
  • .bat和exe的权限是对任务帐户的完全控制;
  • 帐户的密码未更改;
  • “开始时间”字段是.bat路径;
  • 没有涉及映射的驱动器;
  • 该任务使用域帐户运行,该帐户也是计算机管理员,它配置了最高权限,当然还有用户是否已登录。

无论如何,任务正常工作了好几个月并且恢复工作只是强制保存到任务,所以配置应该没问题。

您是否有任何建议来检测和预防此问题?

1 个答案:

答案 0 :(得分:0)

不幸的是,我唯一想到的就是添加一个输出时间戳到第一个任务的步骤,然后创建一个计划任务,检查时间戳以确保其“当前”。

出于好奇,当发生这种情况时,任务是否显示在以编程方式检查时设置了?

Dim rootFolder As TaskScheduler.ITaskFolder
Dim task As TaskScheduler.IRegisteredTask

' Create the TaskService object.
Set service = CreateObject("Schedule.Service")
service.Connect strHostname, strUsername, strDomain, strPassword

' Get the task folder that contains the tasks.
Set rootFolder = service.GetFolder("\")
Set task = rootFolder.GetTask(strNameOfTask)
WScript.Echo task.Name & " (Enabled: " & task.Enabled & ") Last Run: " & task.LastRunTime

另外,当您查看C:\ Windows \ System32 \ Tasks时,该任务的XML文件是否仍然有效?

如果不确切地知道这个过程的哪个部分,很难分辨出去哪里寻找解决方案。