如何解决 Windows 计划任务未运行的问题?
Posted
技术标签:
【中文标题】如何解决 Windows 计划任务未运行的问题?【英文标题】:How to troubleshoot Windows Scheduled Task not running? 【发布时间】:2010-10-26 07:47:18 【问题描述】:在部署我们的 .net 应用程序的过程中,我在服务器上设置了大约 20 个计划任务,所有这些任务基本上都做同样的事情:调用一个小型 .net 控制台应用程序,从 SQL 数据库中提取数据并将其发布到 Web 服务。每个任务调用应用程序的一个单独副本,每个副本在其配置文件中具有不同的查找 ID 值。
除了其中两个任务外,所有任务每晚都能可靠地运行。其中两个任务似乎不时停止运行,目前尚不清楚原因。当它们停止运行时,计划任务界面会正确显示它们的最后运行日期,该日期比在计划时间继续运行的其他任务晚一天或更长时间。停止运行的任务不会自行再次运行,尽管已按计划每晚运行。事件日志或计划任务界面本身中没有记录错误。这对我们来说是最奇怪的部分:如果我手动启动计划任务,它运行良好,它调用 .net 控制台应用程序并且一切都完成而没有异常。然后它继续在预定的时间运行良好,一次数天或数周,但最终失败,似乎出乎意料。看来这两个任务总是在同一个晚上开始失败。
【问题讨论】:
我认为这个问题的答案***.com/questions/32589381 也可以帮助一些人了解为什么手动运行的任务并不总是按计划运行。 (但从它们的描述方式来看,这些不是重复的问题。) 摘要:Windows 2012 计划任务并不总是看到正确的环境变量,包括PATH
,用于任务设置为运行的帐户;事实上,他们只会在任务用户实际登录时看到完整正确的变量集。
【参考方案1】:
有一个“最后结果”列,它应该为您提供与正在运行的任务本身相关的代码(它不会有任何类型的异常数据)。 0 表示任务完成且没有错误。您可以查找其他任何内容,看看为什么任务无法启动。如果任务似乎仍然没有运行,但您仍然看到 Last Result 为 0,这意味着您的代码中有问题,但它正在正常退出。
【讨论】:
【参考方案2】:也许他们挂了,还在跑?
您可以点击额外菜单并选择菜单项查看日志,然后记事本将从任务计划器中打开一个日志文件
【讨论】:
【参考方案3】:将计划任务与无密码 Windows 用户帐户关联时会出现计划任务未运行的一个原因:默认情况下,计划任务无法使用空白密码运行。如果您想从没有密码的帐户运行计划任务,您必须禁用系统变量:
转至:开始 > 管理工具 > 本地安全策略 > 安全设置 > 本地策略 > 安全选项 选择:“帐户:将使用空白密码的本地帐户限制为仅限控制台登录” 禁用此变量免责声明:不建议使用没有密码的帐户。
【讨论】:
【参考方案4】:当我尝试对行为不端的计划任务进行故障排除时,我发现此页面很有帮助:http://support.microsoft.com/kb/308558
选择 View->Details 显示附加信息,例如 Last Run Time 和 Status,这个页面告诉我状态/错误代码的含义:http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381(v=vs.85).aspx
【讨论】:
【参考方案5】:Taskscheduler 在 64 位系统上假定应用程序是 64 位的。 如果是 32 位从 32 位命令行启动它,即如果你想运行 c:\program files (x86)\Myprogram\Program.exe,告诉 taskscheduler 启动:
%systemroot%\Syswow64\cmd.exe /C "c:\program files (x86)\Myprogram\Program.exe"这会强制它从 32 位命令提示符启动,因此使用 32 位仿真。
【讨论】:
【参考方案6】:您是否设置了“开始于”属性?
如果这些 .NET 控制台应用程序需要 app.config 或某些位于其路径中的文件,则必须将“Start in”属性设置为“c:\your\app\path\”,否则它们会像在系统目录,找不到需要的文件!
【讨论】:
【参考方案7】:以下 SO 问题的答案也可能与阅读此问题的人高度相关(但是,请注意,它仅描述了计划任务的一个可能的特定问题,我相信这些问题都不是另一个的副本):
Why is my Scheduled Task updating its 'Last Run Time' correctly, and giving a 'Last Run Result' of '(0x0)', but still not actually working?
对另一个问题的回答总结是,Windows 2012 计划任务看不到正确的环境变量,包括 PATH,对于设置为运行任务的帐户。
就更一般的计划任务故障排除而言(如本问题所述),您可以测试此特定问题(例如,在任务中运行 SET > test.txt
,如该答案中所建议的那样),一旦您可以看到它发生,如果它影响到你,你可以解决它。
【讨论】:
【参考方案8】:在我的情况下,即使它说上次运行成功 (0),计划任务也不会运行。事实证明,运行作业的 Windows 用户帐户已被锁定。我之所以意识到这一点,是因为我尝试编辑现有的计划任务,将用户帐户设置为相同的,然后点击确定,它给了我一个关于帐户被锁定的错误。
【讨论】:
【参考方案9】:我发现这个超级有用的链接:https://windowsreport.com/windows-scheduled-tasks-not-running/ 用于许多用例的彻底调试步骤。
在我的情况下,调度程序配置为运行的用户帐户被锁定,停止执行计划任务,没有任何日志或报告问题。
【讨论】:
以上是关于如何解决 Windows 计划任务未运行的问题?的主要内容,如果未能解决你的问题,请参考以下文章
请问如何解决的?“windows2008 X64下,建立CMD程序的开机运行计划任务不能正常执行. 但直接双击执行”
WIN7 64位系统任务计划程序里运行VBS脚本 报错,脚本本身没问题!请问怎么解决?
磁盘碎片整理功能无法启动,打开,提示“任务计划程序服务未运行,请启动后再试”,怎么解决?