从计划任务运行时,Windows .bat 失败;从命令行运行时运行良好

从计划任务运行时,Windows .bat 失败;从命令行运行时运行良好

我正在尝试通过批处理文件启动虚拟机。当我从 Windows 命令行运行 .bat 文件时,它运行良好。但是当我从计划任务运行它时,它会退出并显示错误代码 1。

我正在使用计划任务计划运行的同一用户运行命令行。我已检查计划任务的权限,看来我拥有执行该任务所需的所有权限。“以...身份运行”对话框中有正在使用的用户的正确密码。

该批处理文件非常简单:

"C:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "Debian"

答案1

需要确保的是,您用户的计划任务实例有权访问您的所有网络共享。如果您的计算机属于在登录时设置网络驱动器的域的一部分,或者您有任何文件夹重定向,则可能会导致问题。

请务必记住,计划任务用户在您帐户的有限实例中运行。不会运行任何启动脚本,也不会创建本地用户缓存。如果您当前登录的用户锁定了某个文件,则计划任务用户将无法使用该文件。

我知道这不太可能,但如果没有 VirtualBox 可执行文件正在执行的操作的日志,我们真的帮不上什么忙。大多数编写良好的程序都会将“全文”错误转储到日志文件中,这样您就知道实际发生了什么。

答案2

大约 2 个月前,我遇到了同样的问题,但当时是在 Win 7 上 - 不过,该解决方案可能也适用于 XP。我有一个 VB 脚本,而不是 CMD 或 BAT 文件,当我将它放到 时也无法执行D:\TestData。事实证明,任务计划程序对此类文件的允许位置非常谨慎。

长话短说,我最终得到以下结果:我创建了Scripts文件夹C:\Users\username\AppData\Local\Scripts- 并且它运行良好)

对于 XP,尝试在 eg 文件夹中创建它%USERPROFILE%(这是C:\Documents and Settings\username默认设置)。

希望这对您有帮助。

答案3

在“安全选项”组中,有一个关于如何运行任务的选项。您可以在“属性”页面的第一个选项卡中找到此选项。

  • Run only when user is logged on- 它使任务在您的桌面上可见。
  • Run whether user is logged on or not- 由于没有用户登录时无法显示 UI,因此它使任务不可见。

你能尝试前一种选择吗?实际上,我曾经在与你非常相似的情况下使用过这种方法。通过这样做,至少你有机会看到那里发生了什么,这肯定比“错误代码 1”更有信息量。

更不用说,用户应该一直登录以确保任务运行,但这可以通过以下方式解决登录自动化和系统锁定。

答案4

问题: - 启动物理机并通过计划任务自动启动虚拟机 - 稍后使用我的主帐户登录(几天或几周后......无所谓) - 启动“cmd”,输入“vboxmanage list runningvms”不显示任何虚拟机

我的解决方案:1-首先打开组件服务DCOM

组件服务

2- 编辑突出显示的组件,如下所示:

编辑帐户设置以启动

2- 输入你的账户凭证,你将在命令行上看到 Vms

3-启动任务编辑器(在我的情况下是 Windows 10)并按照显示的步骤进行操作。(我启用了本地管理员帐户并将其用于该任务。DCOM 组件由步骤 2 中定义的设置启动)

任务调度器“简单任务步骤 1”

4-设置启动参数

在此处输入图片描述

重新启动机器以使 DCOM 配置更改生效。

现在应该可以在 DCOM 面板中通过您输入的登录帐户看到“vboxmanage list runningvms”。

相关内容