当设置为“是不是登录时运行”时,Windows 任务计划程序不运行 VBScript

Posted

技术标签:

【中文标题】当设置为“是不是登录时运行”时,Windows 任务计划程序不运行 VBScript【英文标题】:Windows Task Scheduler not running VBScript when set to "Run if logged on or not"当设置为“是否登录时运行”时,Windows 任务计划程序不运行 VBScript 【发布时间】:2014-11-02 04:34:11 【问题描述】:

我正在尝试通过 Windows 任务计划程序将 .vbs 文件作为计划任务运行。在“常规”选项卡下,当我选择“仅在用户登录时运行”时,脚本按预期执行。

但是,当我选择“无论用户是否登录都运行”并输入适当的凭据时,任务会在预定时间运行,但脚本实际上并未运行。我已经尝试在 wscript.exe 和 cscript.exe 下运行脚本,但都没有成功。

编辑:即使我在任务开始时登录,脚本仍然不会在“登录或退出”设置下运行。

附加信息:此计划任务的目的是在我上班之前运行。我已经将我的 Bios 配置为在预定时间 (06:00) 启动,并将任务计划程序设置为在 06:27 运行。我已经成功测试了 BIOS 启动以及脚本本身(包括使用任务计划程序来运行它)。因此,我能找到的唯一薄弱环节是“无论用户是否登录都运行”选项。

我正在运行 Windows 7 企业版。

任何帮助将不胜感激!

【问题讨论】:

不确定是否可以这样做。 WScript 和 CScript 都需要输出,这被认为是“桌面交互”。更多细节(文字控制台应用程序,而不是 WScript/CScript,但适用相同的规则)***.com/questions/1369236/… 你说的有道理,但是当我登录时脚本不应该正确执行吗(见编辑)?话虽如此,在尝试运行脚本之前先安排一个任务登录可以解决这个问题吗? (我很快就会对此进行测试)。 好的,我已经做了更多研究:social.technet.microsoft.com/Forums/windows/en-US/… 我认为“桌面交互”问题可能是导致此问题的原因。 AFAIK;中止的脚本不报告任何内容。因此,您可以看到该过程的开始,但我猜它在“无输入/输出通道”上中止。默默地失败了脚本的执行。 【参考方案1】:

这是因为它通常会使用 shell 处理程序运行脚本,默认情况下是 wscript.exe。当没有桌面环境时(因为没有人登录),它会失败并中止脚本执行(或者更确切地说,一开始就不运行脚本)。

要解决此问题,不要直接运行 .vbs 文件,而是将其更改为运行 cscript.exe(命令行脚本运行时程序),并将脚本的文件名作为第一个参数传递。还要确保您没有任何InputBoxMessageBox 调用(而是使用WScript.Echo 向用户返回消息:wscript 显示消息框,但cscript 会将其写入控制台.

【讨论】:

我已经尝试使用脚本的文件名作为参数运行cscript.exe,但任务只是简单地“完成”而不运行脚本。我还检查了脚本,没有调用MessageBoxInputBox @Arne 任务的“上次运行结果”是什么?您正在运行的确切命令是什么?您是否将脚本文件名括在引号中? 我已经对命令进行了一些变体,但我目前在“启动程序/脚本”框中使用cscript.exe,并将几个选项和脚本文件名传递为可选参数(在引号中)://nologo //B "C:\folder\myscripthere.vbs"

以上是关于当设置为“是不是登录时运行”时,Windows 任务计划程序不运行 VBScript的主要内容,如果未能解决你的问题,请参考以下文章

停止 Firefox DPI 缩放(当 Windows 设置为 125% 时)

当 Windows SDK 版本设置为 15063.13 时,“LNK1104 无法打开文件 'kernel32.lib'”

为多个任务设置时限invokeAll

Windows Forms C# 应用程序 - 当用户为操作系统字体大小选择 125% 或 150% 时,设置表单控件的字体大小以适应屏幕?

单击 Fancybox Overlay div 时如何防止默认设置?

当导航抽屉滑动任意量时隐藏操作栏菜单项