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 Script(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
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,没有任何窗口保持打开状态.
另一种解决方案:http://vboxvmservice.sourceforge.net/
它对我来说很完美!
真正最一致的选择是使用任务计划程序。
这需要几个非常简单的步骤,但我将详细解释它们以确保具有任何技术背景的任何人都可以设置:
导航 C:\Users\YourUserNameHere\VirtualBox VMs
上面的文件夹名称一般反映了虚拟机名称。您可以通过检查 VirtualBox Manager 本身来确认这一点:
机器名称是WindowsXPSP3.
首先单击开始按钮并键入不带引号的“任务计划程序”。然后打开任务计划程序:
在任务调度器中,我们将在左侧看到一个结构树。右键单击Task Scheduler Library。左键单击New Folder...:
将文件夹命名为令人难忘的名称,例如User Custom并点击“确定” (如果您已经有一个想要使用的现有文件夹,也可以,请跳到下一段):
单击您新创建的文件夹(在我的例子中User Custom)以突出显示它。右键单击右侧的空列表,然后左键单击Create New Task...:
现在是棘手的事情。逐字按照我的指示进行操作。如果您因为它不起作用而不想投票,或者在评论中说“这对我不起作用”,我敢打赌您在这里跳过了一步。回来再试一次。
该Name和Description可以是任何你喜欢的,它仅仅是美观,不会影响功能。我将以我的虚拟机命名我的虚拟机并进行简要说明。重要的是您选择Run whether user is logged on or not和Run with highest privileges:
切换到Triggers顶部的选项卡并左键单击New...。将Begin the task:组合框切换到At Startup然后左键单击确定:
切换到Actions顶部的选项卡并左键单击New...。点击浏览(不要不尝试手动键入此,您将导致自己的头痛),然后导航到C:\Program Files\Oracle\VirtualBox。突出显示VBoxManage.exe并左键单击Open:
将除可执行文件和引号之外的所有内容复制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% 确认它确实在系统启动时启动,而不是在用户登录后启动。