DevOps
Development environment
VirtualBox
Running a VM headless (in the background, like a service) or without GUI
Last tested on Windows 10 Home x64 (v1511, build 10586.318) + VirtualBox v5.0.20 r106931
Base reference: Stackoverflow
given:
- the name of the virtual machine is virtualmachine
instruction:
We first create a batch file that runs the VM. Create a file named vm-run.bat with the following content.
cd "c:\Program Files\Oracle\VirtualBox\"
VBoxHeadless -s virtualmachine -v on
We can just use the batch file above, however, it opens up the shell to run the batch file. We use Windows-based script host using VBS to run the file. Create a file named vm-run.vbs with the following content.
set WshShell = WScript.CreateObject("WScript.Shell")
obj = WshShell.Run("vm-run.bat",0)
set WshShell = Nothing
Use the following line to run the VM in the background: wscript vm-run.vbs
optional 1: create a shortcut
You can optionally create a shortcut on your Desktop with the following value in Target:
C:\Windows\System32\wscript.exe C:\Files\tools\vm.run.vbs
To check if it's running, go to Task Manager (taskmgr using CLI ÿ + r) and check Details tab. There should be 3 instances of VBoxHeadless.exe processes running. Another way to check in CLI is to execute this line:
C:\Users\JMoe>tasklist /FI "IMAGENAME eq VBoxHeadless.exe"
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
VBoxHeadless.exe 7104 Console 1 2,444 K
VBoxHeadless.exe 7112 Console 1 4,164 K
VBoxHeadless.exe 7136 Console 1 83,596 K
optional 2: run it without logging on to the system (similar to a system service)
- Open Task Scheduler
- Under General tab, in security options, choose Run whether user is logged on or not
- Check Run with highest privileges
- Under Triggers tab, create a trigger and choose "At startup" for Begin the task. Make sure Enabled is checked
- Under Actions tab, create an action and choose "Start a program" for Action. Program/script: should be "C:\Windows\System32\wscript.exe" and Add arguments (optional): is set to "C:\myscripts\vm.run.vbs"