Virtual Server Scripts Part 3 - Controlling Virtual Machines
In the past couple of posts on this I took you through creating virtual machines and backing them up. In this section I am going to concentrate of controlling the virtual machines. In Part 4 I will look at some of the extended features available and beyond.. well I will let you wait and see.
So, here goes...
To start... we need to know how to retrieve a list of virtual machines that are on the system. There are a couple ways of doing this, but I like to retrieve basic information about the state of each Virtual Machine as well as just it's name.
There main command we are going to use here is:
objVM.State - https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msvs/msvs/ivmvirtualmachine_state.asp
-------------------------------------------------------------------------
On Error Resume Next
' A script for enumerating virtual machines
' Get / Set arguments
vsHost = "localhost"
'vsHost = WScript.Arguments(0)
Set objVS = CreateObject("VirtualServer.Application",vshost)
set colVMs = objVS.VirtualMachines
set outputtext = "VM Name : State" & chr(13)
For Each objVM in colVMS
cstate = objVM.State
If cstate = 1 then
tstate = "off"
elseif cstate = 2 then
tstate = "saved"
elseif cstate = 3 then
tstate = "starting"
elseif cstate = 4 then
tstate = "restoring"
elseif cstate = 5 then
tstate = "running"
elseif cstate = 6 then
tstate = "paused"
elseif cstate = 7 then
tstate = "saving"
elseif cstate = 8 then
tstate = "turning off"
else tstate = "unknown"
end if
outputtext = outputtext & objVM & ": " & tstate & chr(13)
Next
Wscript.Echo outputtext
-------------------------------------------------------------------------
Next we want to be able to change the state, so here are a couple of useful scripts:
Turn the VM on:
' A script for starting a virtual machine
' Get / Set arguments
vmName=WScript.Arguments(0)
vsHost = "localhost"
'vsHost = WScript.Arguments(1)
'Connect to Virtual Server
Set virtualServer = CreateObject("VirtualServer.Application", vshost)
'Set virtual machine from command-line parameter
set vm = virtualServer.FindVirtualMachine(vmName)
Wscript.Echo "Starting Virtual Machine: " & vmName
'Start Virtual Machine
vm.Startup
-------------------------------------------------------------------------
Turn the VM Off
' A script for stopping a virtual machine
' Get / Set arguments
vmName=WScript.Arguments(0)
vsHost = "localhost"
'vsHost = WScript.Arguments(1)
'Connect to Virtual Server
Set virtualServer = CreateObject("VirtualServer.Application", vsHost)
'Set virtual machine from command-line parameter
set vm = virtualServer.FindVirtualMachine(vmName)
Wscript.Echo "Stopping Virtual Machine: " & vmName
'Turn off virtual machine and wait for it to finish turning off
vm.TurnOff
-------------------------------------------------------------------------
Save the state of the VM
' A script for saving a virtual Machine State
' Get / Set arguments
vmName=WScript.Arguments(0)
vsHost = "localhost"
'vsHost = WScript.Arguments(1)
'Connect to Virtual Server
Set virtualServer = CreateObject("VirtualServer.Application", vsHost)
'Set virtual machine from command-line parameter
set vm = virtualServer.FindVirtualMachine(vmName)
Wscript.Echo "Saving State of Virtual Machine: " & vmName
'Save state the virtual machine
set saveTask = vm.Save
Watch this space for the next installment.
Enjoy!