Virtuelle Maschine per Script herunterfahren und starten

In Umgebungen mit nur einem oder wenigen virtuellen Servern ist der Einsatz von Produkten aus der System Center-Familie (Data Protection Manager, Virtual Machine Manager …) meist nicht möglich oder ein wenig übertrieben. Man möchte aber trotzdem seine virtuelle Maschine sichern, und das konsistent.

Eine Möglichkeit ist der Einsatz eines Scriptes, das eine virtuelle Maschine herunterfährt, eine Sicherung der Dateien macht und danach die Maschine wieder startet. Diese Scripte sehen wie folgt aus:

 

shutdown_vm.vbs

 

Option Explicit

Dim WMIService
Dim VMList
Dim VMName
Dim VMGuid
Dim ShutdownList
Dim Result

‚Name des virtuellen Servers, der heruntergefahren werden soll
VMName = "Server_xy"

‚Name der WMI-Instanz Virtualisierung auf dem lokalen Computer
Set WMIService = GetObject("winmgmts:\\.\root\virtualization")

‚Abfrage für die spezielle virtuelle Maschine, die ich herunterfahren möchte
Set VMList = WMIService.ExecQuery("SELECT * FROM Msvm_ComputerSystem WHERE ElementName=’" & VMName & "’")

‚GUID der virtuellen Maschine herausbekommen
VMGuid = VMList.ItemIndex(0).Name

‚Abfrage der Msvm_ShutdownComponent für die herausbekommene GUID
Set ShutdownList = WMIService.ExecQuery("SELECT * FROM Msvm_ShutdownComponent WHERE SystemName=’" & VMGuid & "’")

‚Das Herunterfahren veranlassen
Result = ShutdownList.ItemIndex(0).InitiateShutdown(True,"Herunterfahren ausgeloest durch script")

 

 

startup_vm.vbs

Option Explicit

 

Dim WMIService
Dim VMList
Dim VMName

‚Name des virtuellen Servers, der gestartet werden soll
VMName = "Server_xy"

‚Name der WMI-Instanz Virtualisierung auf dem lokalen Computer
Set WMIService = GetObject("winmgmts:\\.\root\virtualization")

‚Abfrage für die spezielle virtuelle Maschine, die ich starten möchte
Set VMList = WMIService.ExecQuery("SELECT * FROM Msvm_ComputerSystem WHERE ElementName=’" & VMName & "’")

‚ Anfordern eines Status-Wandels der ersten Maschine die wiedergekehrt ist
‚ 2 bedeutet Start, 3 bedeutet Stop and 32769 bedeutet Stand Speichern
VMList.ItemIndex(0).RequestStateChange(2)

In beiden oben aufgelisteten Scripten einfach den Namen des virtuellen Servers eintragen und ausführen, dann wird der Server antweder heruntergefahren oder gestartet.

Jan

 

Update 30.06.10

ACHTUNG: Dieses Script ist veraltet! Ein aktuelles Powershell-Script gibt es unter dem folgendem Link:

 

Hyper-V Sicherung mittels Powershell Script

Jan Kappen
 

Jan Kappen ist ausgebildeter Fachinformatiker in der Richtung Systemintegration. Er hat seine Ausbildung im Sommer 2008 abgeschlossen und arbeitete bis August 2018 bei der Rachfahl IT-Solutions GmbH & Co. KG. Seit September 2018 arbeitet er als Senior Netzwerk- und Systemadministrator bei einem großen mittelständischen Unternehmen im schönen Sauerland. Jan Kappen ist unter anderen MCITP Server Administrator, Enterprise Administrator und Enterprise Messaging Administrator 2010 sowie MCTS für System Center Virtual Machine Manager 2008, Windows Server 2008 Active Directory, Windows Server Virtualization und Windows Server 2008 Network Infrastructure. Seit 2015 wird Jan Kappen im Bereich "File System Storage" bzw. "Cloud & Datacenter Management" für seine Expertise und seine Community-Arbeit mit dem MVP Award von Microsoft ausgezeichnet.

Comments are closed