Windows任务计划程序设置为“无论是否登录”,却无法运行VBScript。

3
我想通过Windows任务计划程序运行一个.vbs文件。在“常规”选项卡下,当我选择“仅在用户已登录时运行”时,脚本按预期执行。然而,当我选择“无论用户是否登录”,并输入适当的凭据时,任务会在计划时间运行,但脚本实际上不会运行。我已经尝试在wscript.exe和cscript.exe下运行脚本,但都没有成功。即使我在任务开始时已经登录,脚本也不会在“登录或注销”设置下运行。其他信息:此计划任务的目的是在我到达工作场所之前运行。我已经配置了BIOS以在预定时间(06:00)启动,并将任务计划程序设置为在06:27运行。我已成功测试了BIOS启动以及脚本本身(包括使用任务计划程序运行它)。因此,我能找到的唯一薄弱环节就是“无论用户是否登录”选项。我正在运行Windows 7 Enterprise。感谢任何帮助!

不确定是否可以做到这一点。WScript和CScript都需要被视为“桌面交互”的输出。更多细节(一个字面上的控制台应用程序,而不是WScript/CScript,但同样适用规则)https://dev59.com/UHM_5IYBdhLWcg3wdy5g - Marvin Smit
你说的很有道理,但是当我登录时脚本不应该能够正常执行吗(参见编辑)?话虽如此,将任务安排为在尝试运行脚本之前首先登录是否可以解决这个问题?(我将很快进行测试)。 - Arne
好的,我又做了一些研究:http://social.technet.microsoft.com/Forums/windows/en-US/c03d6691-b058-4f8d-961c-e8eba25bbaed/task-scheduler-problem-run-whether-user-is-logged-on-or-not?forum=w7itprogeneral我认为“桌面交互”可能是这个问题的原因。 - Arne
据我所知;一个中止的脚本不会报告任何东西。因此,你可以看到进程的启动,但我的猜测是它在“没有输入/输出通道”处停止执行脚本,并悄悄地失败了。 - Marvin Smit
1个回答

4
这是因为通常它会使用shell处理程序运行脚本,而默认情况下是使用wscript.exe。当没有桌面环境(因为没有用户登录)时,它会失败并中止脚本执行(或者更确切地说,在第一次运行脚本之前就已经失败了)。
要解决这个问题,不要直接运行.vbs文件,而是改为使用脚本的文件名作为第一个参数运行cscript.exe(命令行脚本运行程序)。同时,请确保您没有任何InputBoxMessageBox调用(而是使用WScript.Echo将消息返回给用户:wscript显示消息框,但cscript会将其写入控制台)。

我已经尝试使用脚本文件名作为参数运行cscript.exe,但任务仅仅“完成”而没有运行脚本。我还检查了脚本,没有调用MessageBoxInputBox - Arne
@Arne,“Last Run Result”是任务的什么意思?你正在运行什么确切的命令?你是否将脚本文件名用引号括起来了? - Dai
我已经尝试了一些命令的变化,但目前我在“启动程序/脚本”框中使用cscript.exe,并将一些选项和脚本文件名作为可选参数(用引号括起来)传递://nologo //B "C:\folder\myscripthere.vbs" - Arne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接