I discovered how easy it is to control virtual machines with a script this weekend. I have one server that I use to run virtual machines that I keep running all the time. When I patch this server, I need to shut down all VMs before it is restarted and then restart the VMs after the computer starts. After doing a quick search I discovered it only takes a few lines of code to shutdown or start a VM.
Shutdown a server named Server1On Error Resume NextSet objVS = CreateObject("VirtualServer.Application")Set objVM = objVS.FindVirtualMachine("Server1")Set objGuestOS = objVM.GuestOSobjGuestOS.Shutdown()
Startup a server named Server1On Error Resume NextSet objVS = CreateObject("VirtualServer.Application")Set objVM = objVS.FindVirtualMachine("Server1")objVM.Startup()
If you have multiple VMs you can put them all in the same script as shown below:
On Error Resume NextSet objVS = CreateObject("VirtualServer.Application")Set objVM = objVS.FindVirtualMachine("Server1")Set objGuestOS = objVM.GuestOSobjGuestOS.Shutdown()sleep 15000Set objVS = CreateObject("VirtualServer.Application")Set objVM = objVS.FindVirtualMachine("Server2")Set objGuestOS = objVM.GuestOSobjGuestOS.Shutdown()
So to make things easier on me I wrote two simple scripts; one that starts the VMs and one that stops them. I then configured a local policy on the server to run the script that starts the VMs as a "Startup Script" so the VMs would start automatically every time the server is started.
Virtual Machine and Virtual Server Properties http://www.microsoft.com/technet/scriptcenter/scripts/vs/default.mspx?mfr=true