在没有用户登录的情况下从任务计划程序运行批处理文件

yhu*_*ain 12 windows-7 batch-file

我正在尝试从任务计划程序在 Windows 7 上运行批处理文件。如果我从命令提示符运行批处理文件,我可以很好地运行它。

如果我从 Task Scheduler 运行它以仅在用户登录时运行,则该任务将毫无问题地运行。但是,当它在用户未登录的情况下运行时,任务计划程序看起来像是在运行文件,但没有任何反应。

我已经尝试将批处理文件更改为以下行,以确保它不是因为批处理文件中的内容:

echo "success" >> c:\temp\test.log
Run Code Online (Sandbox Code Playgroud)

这不起作用。有任何想法吗?我让它以最高权限运行,并且使用对批处理文件和写入文件的文件夹具有完全权限的管理员帐户。

Pim*_* IT 23

任务调度程序:调度的批处理脚本未运行

任务计划程序属性。. .

从 WindowsTask Scheduler上的工作Properties (见最底部的屏幕截图)中。. .

  • 1. General选项卡,确保选择/选中或取消选中以下选项,如打印屏幕 A所示

    • 取消选中 Run only when user is logged on
    • 查看 Run whether user is logged on or not
    • 查看 Run with the highest privileges
  • 2. Conditions选项卡,确保如Print Screen B所示选择选中取消选中以下选项

    • 查看 Wake the computer to run this task
  • 3. Actions选项卡,单击Edit,并确保Start in (optional)按照以下示例所示设置(不要在其周围加上双引号)作为指向批处理脚本所在位置的完整路径,而没有最后一个反斜杠“ \打印屏幕 C


安全考虑

  • 一旦你按下OK(上面的2.),它应该会提示你输入运行它的凭据,并且该凭据需要访问EXECUTE它所在的批处理文件,并且它还需要访问批处理文件正在运行的任何内容你写的。

  • 最好为此进程设置一个静态服务/代理用户帐户,然后使用其凭据运行该进程。您需要确保它的密码是强密码并且设置为永不过期——并且它需要访问EXECUTE批处理并运行正在运行的批处理脚本进程以及任何命令和资源等。它也利用。

  • 似乎Run whether user is logged on or not您必须检查选项Run with highest privileges以使其从任务计划程序中按预期实际运行。

错误检查

  • 如果实际的批处理脚本存在问题,但 Windows任务计划程序确实执行它来运行它,但批处理脚本逻辑出错等,无论出于何种原因,任务计划程序可能不会在此级别看到此故障。从它的角度来看(大多数时候默认情况下),它正在执行批处理文件,因此只要它可以执行它并有权这样做,它的工作就会成功完成。

  • 向批处理脚本逻辑添加错误检查日志记录捕获(或解决)此级别的问题,包括确保批处理调度程序执行它的安全上下文具有对批处理脚本运行的命令、资源等的适当访问权限。


组策略注意事项

检查组策略并作为批处理作业权限登录

答: 在 Windows 上,此权限是通过本地域安全策略授予的。要使用本地安全策略执行此操作,请按照以下步骤操作。

  1. 控制面板中,打开管理工具,然后打开本地安全 策略。
  2. 安全设置下,打开本地策略并突出显示用户权限分配
  3. 找到作为批处理作业登录。打开属性并添加任何需要此权限的用户。
  4. 完成后,保存更改并关闭本地安全设置窗口。

您的更改应立即生效。要更改域安全策略,在域控制器上,使用域安全策略工具控制面板


带有映射驱动器或完整 UNC 路径的批处理脚本逻辑和问题。. .

如果您的脚本正在引用映射的网络驱动器,但您希望它引用它Run whether the user is logged on or not,那么在这种情况下,驱动器映射可能实际上并不存在于批处理过程中以执行预期的操作。

如果可能,请UNC在批处理脚本逻辑中使用路径而不是映射的驱动器号以避免出现问题。否则,您可能需要PUSHD \\ServerName\ShareName在批处理开始时使用POPD,然后在批处理结束时使用。您可以NET USE X: \\ServerName\ShareName在批处理开始时映射驱动器,然后NET USE X: /DELETE在批处理结束时断开驱动器。


其他

  • MS HOTFIX (KB977353):组策略即时任务首选项不在运行 Windows 7 或 Windows Server 2008 R2 的客户端计算机上运行

  • 查看计划任务的Settings选项卡和列为 的选项Stop the task if it runs longer than:。如果选中此选项并且时间段小于正在运行的脚本,则任务计划程序将提前终止它,因此您可能无法获得预期的结果。这是在进行故障排除时需要检查的其他事项,以防万一。

    在此处输入图片说明

  • Triggers计划任务的选项卡中选择该Edit选项时,请确保将Start:时间和日期设置为尚未通过的值。请确保将日期和时间设置为Future中的值。否则,您可能会注意到该作业声明它计划在您预期的下一个预定时间运行;然而,它并不会被执行的任务计划程序也不会在任务计划程序 History选项卡显示它曾经执行(因为它不是)。如果您遇到此问题,只需编辑触发器并使用未来的日期和/或时间更新它即可解决此问题。

    在此处输入图片说明


打印屏幕

打印屏幕 A

在此处输入图片说明

打印屏幕 B

在此处输入图片说明

打印屏幕 C

在此处输入图片说明