任务计划程序-任务“成功”完成,退出代码为 0x8007001

任务计划程序-任务“成功”完成,退出代码为 0x8007001

我在 Windows 10 Pro 上运行一项日常任务,该任务应该

  • 将计算机从休眠状态唤醒
  • 启动cmd.exe,运行命令脚本将文件复制到网络驱动器,创建日志文件
  • 关闭计算机

从任务计划程序中手动启动任务时,一切都按预期执行。

当计算机处于休眠模式时,任务计划程序会在指定时间唤醒计算机,但显然命令文件 (.cmd) 根本没有执行。没有创建日志文件,没有复制文件,并且计算机没有关闭。任务被标记为“成功完成,返回代码为 2147942401”即十六进制 0x80070001。此错误代码似乎表示“非法函数”,但我不知道那是什么,尤其是因为如前所述,手动启动任务时运行良好。

以下是任务设置的概述(从德语翻译而来,但应该很清楚):

  • 常规:无论用户是否登录都执行;不存储密码;最高权限;针对 Windows 10 配置

  • 操作:启动程序 cmd.exe;参数:/c "path-to-cmd-script\script.cmd >> logfile.txt";启动于:空

  • 条件:重新激活计算机

  • 设置:如果需要则允许执行;如果执行失败,则每 10 分钟重新启动一次;如果执行时间超过 3 天,则结束任务;如果未按要求停止,则强制结束活动任务;不启动新实例

我还有另一项任务要做备份确切地运行良好的相同设置(唤醒、运行脚本,然后关闭计算机)。

非常感谢任何提示,欢迎提问。

答案1

其实不是。不过,我使用了最简单的任务计划程序设置,现在它可以正常工作了。

一般的:

  • 仅在用户登录时使用
  • 使用最高权限
  • 针对 Windows 10 配置

行动:

程序/脚本:C:\Windows\System32\cmd.exe
参数:/c <your batch file with parameters>

状况:

  • 重新启动计算机

设置:

  • 如果需要则允许执行
  • 如果错过了启动,请尽快执行
  • 如果任务失败,则每 5 分钟重新启动一次
  • 如果执行超过 3 天则终止任务
  • 若未按要求停止则强制终止
  • 如果任务已在运行,则停止当前实例

现在它已经连续几个月每天在指定时间运行。

答案2

Powershell 对计划任务很挑剔。我为此花费了很多时间。以下是我使用久经考验的批处理文件进行故障排除的方法。

尝试创建一个中间批处理文件并让该批处理文件调用 powershell。使用批处理文件,您可以执行一系列 echo 并将其输出到日志中。这将允许您查看该过程的完整 stdout/stderr。这可能有助于更详细地进行故障排除。

可以通过附加到计划任务参数来创建日志> "<path_to_log_file>" 2>&1

答案3

对我来说,任务有时会成功,有时则不会。根据计划任务历史记录,当失败时,它看起来好像已经运行了大约 40 秒,什么也没做,然后就完成了action "C:\windows\SYSTEM32\cmd.exe" with return code 2147942401

  • 在这种情况下,没有必要弄乱组策略设置,因为有时它有效,但不是每次都有效(见https://stackoverflow.com/questions/48343993/batch-file-from-scheduled-task-returns-code-2147942401/)。

  • 简化、重新创建、重新配置我的任务都无法解决问题。

  • 我也考虑过删掉我的批处理文件并去掉标准输出重定向,从而放弃日志记录功能(并变得盲目)。或者简单地运行一个实际的 .exe 进程,而不是使用批处理文件。这可能是一个解决方案。

  • 我还考虑过用服务替换“启动时”计划任务,但对于这样一个简单的问题来说,这将是一个相当昂贵的实验。

最终,我考虑在计划任务上添加延迟,并寻求将我的任务配置为延迟服务 - 服务可以是“自动”或“自动(延迟启动)”。对于“启动时”计划任务,触发器具有其自己的单独属性,包括添加延迟的能力:

该图描述了延迟启动时计划任务的解决方案

我认为我的计划任务有时会提前几毫秒启动,并且某些操作系统服务或功能尚未可用或被允许。只需在触发器上添加一个小延迟即可解决问题。

相关内容