如何在完全背景"Microsoft Windows(WIN)"中运行"Oracle VirtualBox(VBOX)"?

BG *_*uno 46 virtualization service virtualbox vbox

问题

我想在本地DEV机器上使用" Microsoft Windows(WIN) " 运行自动启动" 虚拟机(VM) ",而不使用" Oracle VirtualBox(VBOX) "" 图形用户界面(GUI ) ".

如何在完全运行后台进程中执行此操作?

BG *_*uno 46

诀窍是在没有GUI的情况下运行VM.有了这个,您可以轻松地在WIN服务器上运行VM,就像服务一样.

0)预先要求存在一些VM,你已经有了一些.下面将其名称改为{vm_name}.

1)首先我们使用内置可执行文件"VBoxHeadless.exe".

创建文件

vm.run.bat
Run Code Online (Sandbox Code Playgroud)

把代码

cd "c:\Program Files\Oracle\VirtualBox\"
VBoxHeadless.exe -s {vm_name} -v on
Run Code Online (Sandbox Code Playgroud)

运行并测试它 - WIN" 命令行界面(CLI) "称为" 命令shell "将打开,VM将在后台运行.

vm.run.bat
Run Code Online (Sandbox Code Playgroud)

2)然后我们使用" 基于Windows的脚本宿主(WSCRIPT) "和语言" Microsoft Visual Basic Sc​​ript(VBS) "并运行上面的文件"vm.run.bat".

创建文件

vm.run.vbs
Run Code Online (Sandbox Code Playgroud)

把代码

Set WshShell = WScript.CreateObject("WScript.Shell")
obj = WshShell.Run("vm.run.bat", 0)
set WshShell = Nothing
Run Code Online (Sandbox Code Playgroud)

运行并测试它 - CLI将在后台运行.

wscript.exe vm.run.vbs
Run Code Online (Sandbox Code Playgroud)

参考

感谢iain

http://web.archive.org/web/20150407100735/http://www.techques.com/question/2-188105/Virtualbox-Start-VM-Headless-on-Windows


Sam*_*uel 40

您可以使用VBoxManage启动VM无头:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "Your VM name" --type headless
Run Code Online (Sandbox Code Playgroud)


小智 16

我使用了与Samuel的解决方案类似的东西.

在桌面(或任何文件夹)上,右键单击并转到"新建" - >"快捷方式".

在目标中,键入:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm {uuid} --type headless
Run Code Online (Sandbox Code Playgroud)

在名称中,键入所需的任何内容,然后单击"完成".

然后停止相同的vm,创建一个新的快捷方式,目标是:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm {uuid} poweroff
Run Code Online (Sandbox Code Playgroud)

双击这些启动并停止VM,没有任何窗口保持打开状态.


mt_*_*erg 11

VirtualBox 4.2开始,您可以在启动vm时按住Shift以在后台完全运行它.详情请见此处.


Edu*_*cio 8

另一种解决方案:http://vboxvmservice.sourceforge.net/

它对我来说很完美!

  • 这是最好的答案,因为如果您关闭Windows而忘记首先手动关闭VM,其他人将终止VM.此服务应用程序允许VM执行ACPI关闭或保存状态. (3认同)

Dee*_*ayh 5

真正最一致的选择是使用任务计划程序。

实施解决方案

这需要几个非常简单的步骤,但我将详细解释它们以确保具有任何技术背景的任何人都可以设置:

  1. 确定您的虚拟机名称
  2. 在任务计划程序中创建任务

1. 确定您的虚拟机名称

导航 C:\Users\YourUserNameHere\VirtualBox VMs

VirtualBox 虚拟机文件夹

上面的文件夹名称一般反映了虚拟机名称。您可以通过检查 VirtualBox Manager 本身来确认这一点:

虚拟框图形用户界面

机器名称是WindowsXPSP3.

2.在Task Scheduler中创建任务

首先单击开始按钮并键入不带引号的“任务计划程序”。然后打开任务计划程序:

任务计划程序搜索

在任务调度器中,我们将在左侧看到一个结构树。右键单击Task Scheduler Library。左键单击New Folder...

任务计划程序新建文件夹

将文件夹命名为令人难忘的名称,例如User Custom并点击“确定” (如果您已经有一个想要使用的现有文件夹,也可以,请跳到下一段)

命名新文件夹

单击您新创建的文件夹(在我的例子中User Custom)以突出显示它。右键单击右侧的空列表,然后左键单击Create New Task...

创建新任务

现在是棘手的事情。逐字按照我的指示进行操作。如果您因为它不起作用而不想投票,或者在评论中说“这对我不起作用”,我敢打赌您在这里跳过了一步。回来再试一次。

NameDescription可以是任何你喜欢的,它仅仅是美观,不会影响功能。我将以我的虚拟机命名我的虚拟机并进行简要说明。重要的是您选择Run whether user is logged on or notRun with highest privileges

创建任务:常规

切换到Triggers顶部的选项卡并左键单击New...。将Begin the task:组合框切换到At Startup然后左键单击确定:

新触发器

切换到Actions顶部的选项卡并左键单击New...。点击浏览(不要尝试手动键入此,您将导致自己的头痛),然后导航到C:\Program Files\Oracle\VirtualBox。突出显示VBoxManage.exe并左键单击Open

浏览到 VBoxManage

可执行文件和引号之外的所有内容复制Program/script:Start in (optional):

复制目录路径

最后,输入以下行Add arguments (optional):并点击确定:

startvm "YourVirtualMachineNameFromStep1" --type headless

就我而言,我将使用:

startvm "WindowsXPSP3" --type headless

输入参数

我的Conditions选项卡通常设置为以下内容:

条件选项卡

确保您的Settings选项卡如下所示,但绝对确保您已将标记为黄色的项目设置为与我的匹配。这将确保如果某些先决条件尚未准备好,它将重试几次以启动虚拟机,并且虚拟机不会在 3 天后终止。除非您知道自己在做什么,否则我会将其他所有内容保留为默认值。如果你不做我在这里展示给你的东西,它最终不起作用,那是你的问题:

设置选项卡

最后,点击Create Task窗口底部的确定。你完成了!

测试解决方案

在上面测试我的假场景(以及如何测试你的)

当我重新启动计算机时,我可以登录并打开 VirtualBox Manager 并看到我的 VM 正在运行:

运行虚拟机

我还可以打开 Task Scheduler 备份,并验证它是否成功运行,或者查看错误是什么(如果没有,大多数错误将是人们试图手动输入我告诉他们不要输入的目录错误):

任务计划程序成功

测试我的实际用例

在另一台机器上,我将我的 Linux 服务器设置为具有自己的原始固态硬盘驱动器的虚拟机。如果机器自动重新启动(崩溃、Windows 更新等),我希望该服务器能够重新启动,而无需用户登录。我完全按照上面的描述设置了那个,然后重新启动了那台机器。我知道它运行成功,因为我能够从另一台计算机访问我的 Samba 共享(外行:一个文件夹,其中包含我通过网络共享到我的其他计算机的内容),而无需先登录运行服务器 VM 的机器。这 100% 确认它确实在系统启动时启动,而不是在用户登录后启动。