任务计划程序-批处理“无论用户是否登录都运行”不起作用

任务计划程序-批处理“无论用户是否登录都运行”不起作用

我已经创建了一个批处理文件(EnableDisable.bat),它将禁用视窗 任务计划程序本地系统上的作业 ( ),如果另一个远程系统上已启用并运行SampleJob同名作业 ( )。SampleJob

似乎当设置作业并Run whether user is logged on or not选中该选项时Run with Highest privileges它就是不起作用,而且原因很难确定,我也不确定如何排除故障。


批处理文件

for /f "tokens=1" %%j in ('schtasks /Query /S [servername] /TN "SampleJob" /NH ^| findstr "Ready ^| Running"') do schtasks /Change /Disable /TN "%%j"

笔记:远程系统被称为 [ servername],并将在需要时替换为实际的远程服务器名称。


Windows 任务计划程序作业配置

  • 此批处理文件配置为 Windows 任务计划程序作业
    • 姓名EnableDisableJob
    • 安全选项Run whether user is logged on or not
      • Run with Highest privileges

观察结果

如果我使用 运行该作业,Run only when user is logged on它似乎可以正常工作,没有任何问题。但是,当我尝试使用其他选项运行它时,由于该帐户未登录,因此在这种情况下它无法运行。


问题

我该如何解决此类问题以及应该从哪里开始该过程?

答案1

要解决此问题,请执行以下操作

  1. 注销运行此过程的计算机User1,然后以帐户身份登录计算机User2并确保为其构建了配置文件User2。因此该C:\Users\User2文件夹应该存在。
  2. User2当您以运行计划任务或至少使用 和 进行测试Run only when user is logged on时,您登录到该计算机Run with highest privileges时应该会弹出命令提示符窗口并显示任何错误等,而使用 选项运行它时则不会看到这些错误Run whether user is logged on or not。如果您看到“访问被拒绝”错误或类似错误,则存在权限问题。

权限问题

您需要确保运行该命令的用户帐户任务计划程序安排的工作Run whether user is logged on or notRun with highest privileges有权访问...

  1. cmd.exe从运行任务的机器上运行命令提示符( )
  2. schtasks从运行任务的机器上运行
  3. schtasks针对运行任务的远程服务器进行远程运行

其他项目

  1. 在您临时运行任务的机器上将该User2帐户设为本地管理员,然后注销并重新登录机器,然后再次尝试排除本地机器权限问题。

  2. User1比较与User2远程计算机、域安全组等的安全性差异。


更多资源

答案2

Pimp Juice IT 的上述所有建议都很棒。我在这里还要提一件事。

您必须确保运行该任务的用户帐户具有Log on as batch job用户权限。以下是来自 MS 的文档:关联

以下是有关如何从本地安全策略进行设置的链接:关联

您也可以通过 GPO 执行此操作。

当然,正如 Pimp Juice IT 所建议的,如果用户已经是本地管理员,他们可能已经拥有此权利。

答案3

确保下面两个文件夹存在,否则不起作用:

我尝试了上述所有解决方案,但都没有奏效。如果您想在用户是否登录的情况下运行,则需要确保下面添加的两个文件夹,否则它将无法工作。

  • 在提升的 CMD(重要)或文件资源管理器中创建“桌面”目录

    C:\Windows\System32\config\systemprofile\桌面

    C:\Windows\SysWOW64\config\systemprofile\桌面**

https://social.technet.microsoft.com/Forums/ie/en-US/c03d6691-b058-4f8d-961c-e8eba25bbaed/task-scheduler-problem-run-whether-user-is-logged-on-or-not?forum=w7itprogeneral

答案4

我在运行 bat 文件备份某些数据库时遇到了同样的问题,即使用户是管理员并具有Logon as batch job权限,这也是在更新到 Windows 11 22H2 后开始的。对我有用的是勾选复选框Do not store password. The task will only have access to local computer resources.。老实说,我不知道这有什么用,但我认为这是因为我使用的帐户不是“本地”帐户,而是 MS 帐户,所以也许添加了一些新的限制来帮助提高安全性。

相关内容