我已经创建了一个批处理文件(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
要解决此问题,请执行以下操作
- 注销运行此过程的计算机
User1
,然后以帐户身份登录计算机User2
并确保为其构建了配置文件User2
。因此该C:\Users\User2
文件夹应该存在。 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 not
并Run with highest privileges
有权访问...
cmd.exe
从运行任务的机器上运行命令提示符( )schtasks
从运行任务的机器上运行schtasks
针对运行任务的远程服务器进行远程运行
其他项目
在您临时运行任务的机器上将该
User2
帐户设为本地管理员,然后注销并重新登录机器,然后再次尝试排除本地机器权限问题。User1
比较与User2
远程计算机、域安全组等的安全性差异。
更多资源
答案2
答案3
确保下面两个文件夹存在,否则不起作用:
我尝试了上述所有解决方案,但都没有奏效。如果您想在用户是否登录的情况下运行,则需要确保下面添加的两个文件夹,否则它将无法工作。
在提升的 CMD(重要)或文件资源管理器中创建“桌面”目录
C:\Windows\System32\config\systemprofile\桌面
C:\Windows\SysWOW64\config\systemprofile\桌面**
答案4
我在运行 bat 文件备份某些数据库时遇到了同样的问题,即使用户是管理员并具有Logon as batch job
权限,这也是在更新到 Windows 11 22H2 后开始的。对我有用的是勾选复选框Do not store password. The task will only have access to local computer resources.
。老实说,我不知道这有什么用,但我认为这是因为我使用的帐户不是“本地”帐户,而是 MS 帐户,所以也许添加了一些新的限制来帮助提高安全性。