从任务计划程序运行批处理文件,而无需用户登录


10

我正在尝试从Task Scheduler在Windows 7上运行批处理文件。如果我从命令提示符下运行该批处理文件,则可以正常运行。

如果我从任务计划程序运行它以仅在用户登录时运行,则该任务将运行而没有任何问题。但是,当它在用户未登录的情况下运行时,任务计划程序看起来像是在运行文件,但是什么也没有发生。

我尝试将批处理文件更改为以下内容,以确保不是由于批处理文件中的内容而导致的:

echo "success" >> c:\temp\test.log

那是行不通的。有任何想法吗?我以最高特权和具有对批处理文件以及正在写入文件的文件夹的完全权限的管理员帐户来运行它。


您正在使用哪个帐户运行任务?您设置了哪些触发器?
camilohe 2015年

尝试以系统服务帐户身份运行任务。
SamAndrew81年

Answers:


20

任务计划程序:计划的批处理脚本未运行

任务计划程序属性。。。

从Windows Task 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选项卡,确保如打印屏幕B所示,选择选中取消选中以下选项

    • 校验 Wake the computer to run this task
  • 3. Actions选项卡,单击Edit,并确保Start in (optional)如在下面的例子中(设置只是不要把双引号周围)的完整路径指向其中的批处理脚本位于WITHOUT最终反斜杠“ \打印画面C


安全注意事项

  • 一旦按下OK(上面的2.),它将提示您输入运行身份的凭据,并且该凭据是需要访问EXECUTE存在该批处理文件的文件,并且还需要访问它才能运行批处理文件你写出来的

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

  • 看来Run whether user is logged on or not您必须检查该选项Run with highest privileges,才能使该选项按照任务计划程序的预期运行。

错误检查

  • 如果实际的批处理脚本有问题,但是Windows Task Scheduler实际上确实执行了该批处理脚本来运行它,但是由于某种原因批处理脚本逻辑出错,等等,因此Task Scheduler在此级别可能看不到此故障。从其角度(大多数情况下,默认情况下是大多数时间)来看,它正在执行批处理文件,只要它可以执行并有权执行该批处理文件,便可以成功完成其工作。

  • 错误检查日志记录添加到批处理脚本逻辑中以捕获(或排除)此级别的问题,包括确保批处理调度程序以其身份执行该操作的安全上下文具有对批处理脚本作为其运行的命令,资源等的适当访问权。


组策略注意事项

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

答: 在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:。如果选中此选项,并且时间段少于正在运行的脚本,则Task Scheduler将尽早将其杀死,因此您可能无法获得预期的结果。这是在进行故障排除时要检查的其他内容,以防万一。

    在此处输入图片说明

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

    在此处输入图片说明


打印屏幕

打印屏幕A

在此处输入图片说明

打印屏幕B

在此处输入图片说明

打印屏幕C

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.