![从计划任务运行时,Windows .bat 失败;从命令行运行时运行良好](https://linux22.com/image/1351485/%E4%BB%8E%E8%AE%A1%E5%88%92%E4%BB%BB%E5%8A%A1%E8%BF%90%E8%A1%8C%E6%97%B6%EF%BC%8CWindows%20.bat%20%E5%A4%B1%E8%B4%A5%EF%BC%9B%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%BF%90%E8%A1%8C%E6%97%B6%E8%BF%90%E8%A1%8C%E8%89%AF%E5%A5%BD.png)
我正在尝试通过批处理文件启动虚拟机。当我从 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 中定义的设置启动)
4-设置启动参数
重新启动机器以使 DCOM 配置更改生效。
现在应该可以在 DCOM 面板中通过您输入的登录帐户看到“vboxmanage list runningvms”。