Starting Virtual Machines via Scripting with Windows Virtual PC

Here are some simple scripts that allow you to start a virtual machine with Windows Virtual PC.  Now, you may be wondering why you would want to do this.  Well there are a couple of reasons I can think of:

  • Automated testing.  If you have a virtual machine that runs an automated tests, or a daily batch job: use a script to run the virtual machine in the background.

  • Patch deployment.  If you have an environment where patches are deployed after-hours – these scripts can ensure that virtual machines are running at the right time to receive the updates.

  • Faster launch. A virtual machine that is running in the background can still be used for seamless applications or for full-desktop virtual machine usage.  If you have a virtual machine that you regularly use, starting it with a script when you login means that it will be ready to go as soon as you need it.


# Check for correct command-line arguments
If ($vmName -eq “”)
 write-host “Missing command-line argument.”
 write-host “USage: StartVM.ps1 -vmName `”Name of virtual machine`“”
# Connect to Virtual PC
$vpc=new-object –com VirtualPC.Application –Strict
# Get virtual machine object
$vm = $vpc.FindVirtualMachine($vmName)
# Start the virtual machine
write-host “Starting the virtual machine “ $vmName “…”
$vmTask = $vm.Startup()
# Wait for the virtual machine to start
# Display success or failure
If ($vmTask.result -eq 0) 
 write-host “Virtual machine started.”
 write-host “Failed to start virtual machine.”
 write-host $vmTask.ErrorDescription



Option Explicit
Dim namedArguments, vpc, vm, vmName, vmTask
‘ Check that the script is running at the command line.
If UCase(Right(Wscript.FullName, 11)) = “WSCRIPT.EXE” Then
 WScript.Echo “This script must be run under CScript.”
End If
‘ Get the virtual machine name from the command-line arguments
Set namedArguments = WScript.Arguments.Named
If namedArguments.Exists(“vm”) Then
 vmName = namedArguments.Item(“vm”)
 WScript.Echo “Missing command-line argument”
 WScript.Echo “Usage: StartVM.vbs /vm:” & chr(34) & “Name of virtual machine to be started” & chr(34)
End If
‘ Attempt to connect to Virtual PC
On Error Resume Next
Set vpc = CreateObject(“VirtualPC.Application”)
If Err.Number <> 0 Then
 WScript.Echo “Unable to connect to Virtual PC.”
End if
On Error Goto 0
‘ Get virtual machine object
Set vm = vpc.FindVirtualMachine(vmName)
‘ Start the virtual machine
WScript.Echo “Starting the virtual machine “ & vmName & “…”
Set vmTask = vm.Startup
‘ Wait for the virtual machine to start
‘ Display success or failure
If vmTask.result = 0 Then
 WScript.Echo “Virtual machine started.”
 WScript.Echo “Failed to start virtual machine.”
 WScript.Echo vmTask.ErrorDescription
End If


I have also attached these scripts to this post.