Virtuelle Maschine per Script herunterfahren und starten | Hyper-V Server Blog

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.

  • Stefan sagt:

    Wie kann man die Fragen des vServer mit Scripten beantworten wie zB: “Änderungen speichern” oder “Änderungen löschen”? Danke Stefan

  • Florian sagt:

    Hallo,
    ich habe so eben beide scripte getestet aber ich bekomme es nicht hin.
    Habe einen Server 2008 R2 Enterprise. Habe den Namen der VM statt dem Server_xy eingetragen aber no way…

    Kann mir bitte wer helfen
    lg

  • Jan Kappen sagt:

    Hallo Florian,
    diese Scripte sind so gesehen “veraltet”, wir haben bereits Powershell-Scripte, die die ganze Sache erheblich übersichtlicher und zuverlässiger erledigen. Ich habe mit Carsten heute nachmittag auch schon drüber gesprochen das wir die noch “verfeinern” müssen und dann “der Welt” zur Verfügung stellen, dein Beitrag wird das ganze wahrscheinlich noch ein wenig beschleunigen :)
    Halte den Blog mal im Auge, in naher Zukunft wird dazu was kommen, wahrscheinlich auch mit Video-Anleitung (wenn ich mich mal so weit aus dem Fenster lehnen darf ;) )

    Gruß Jan

  • Burkhard sagt:

    Hallo zusammen,

    Heute ist Frauentag, also der 8. März, und ich kann leider noch keine
    vereinfachte Anleitung hier finden. :-(

    Gruß,
    Burkhard

  • Anton sagt:

    Hallo,

    ich hätte Interesse am vereinfachten Script.
    Ist abzusehen wann dieser kommt ?

    Mfg
    Djuric

  • Heiko sagt:

    Ich unterschreibe ebenfalls.

    Viele Grüße, Heiko.

  • Manfred sagt:

    Hallo,

    warte auch auf die vereinfachte Ausgabe.

    Gruß Mani

    P.S oder wird diese nie kommen ?

  • Jan Kappen sagt:

    Der Carsten hat den Artikel mit der Anleitung schon angefangen… ;)

  • Yannick sagt:

    Hallo Jan
    Ich beginne am Montag (12.4.2010), meine Abschlussarbeit über den Hyper-V Server in einer Testumgebung. Dabei soll ich 2 virtuelle Server errichten. Mit einem PC auf dem unter VMware einen Windows Server 2008 R2 Enterprise installiert ist.
    Jedoch habe ich noch keine Möglichkeit gefunden wie ich die zwei virtuellen Server unter Hyper-V backupen kann..
    Kannst du mir weiterhelfen?

    Vielen Dank und Gruss
    Yannick

  • Yannick sagt:

    PS. Mit Hilfe des virtuelle Windows Server 2008 R2, greife ich auf den Hyper-V Server zu und manage ihn.
    (Hab ich aus lauter Kummer ganz vergessen) :)

  • Jan Kappen sagt:

    Hallo Yannick,
    ich verstehe nicht ganz wie deine Testumgebung aufgebaut ist bzw. was VMWare in der Umgebung macht. Für solche Fragen ist unser Hyper-V-Forum perfekt, zu finden unter http://forum.hyper-v-server.de

    Erklär dort bitte mal, worum es genau geht, dann kann ich dir evtl weiterhelfen :)

  • Dina sagt:

    Hallo, habe das hier gerade gefunden – nach langer Suche – und finde es schade, dass sich da nichts mehr tut?! Ich habe von meinem Chef die Aufgabe bekommen, diese Lösung hier zu suchen und bin auch heilfroh sie gefunden zu haben, allerdings enttäuscht mich das hier:
    Jan Kappen sagt:
    26. März 2010 um 01:33

    Der Carsten hat den Artikel mit der Anleitung schon angefangen… ;)

    Ich sehe nichts davon…
    ich wäre froh, wenn sich da vielleicht schon etwas getan hat, über eine Nachricht hier oder vielleicht per Mail?
    Finde einfach sonst im www nix gescheites!

    Schönen Tag :-)

  • Jan Kappen sagt:

    Also, mal ein paar Worte zu den Leuten hier die solch ein Script gerne hätten und “enttäuscht” davon sind, das wir es bisher aus zeitlichen Gründen nicht geschafft haben, es online zu stellen:

    Sämtliche Informationen, wie man solch ein Script schreibt, sind irgendwo im Internet verfügbar. Dieser Blog hier ist, wie auch alle weiteren Blogs von uns, eine frei verfügbare Informationsquelle, die wir allerdings in der Regel in unserer freien Zeit mit Wissen füllen. Wir sind ein Systemhaus, d.h. wir müssen Geld verdienen, um weiter arbeiten zu können. Wenn nun also solch ein Script unbedingt benötigt wird, bleiben zwei Möglichkeiten offen:

    Entweder man schreibt selbst ein Script, oder man nimmt Kontakt mit uns auf und bucht unsere Dienstleistung. Wir sind gerne bereit, diese Art der “Sicherung” bei Ihnen zu implementieren…

    Jan Kappen

  • Andu sagt:

    Ach Leute, dann macht doch nicht solche Versprechen:

    >Halte den Blog mal im Auge, in naher Zukunft wird dazu was kommen, >wahrscheinlich auch mit Video-Anleitung (wenn ich mich mal so weit aus dem >Fenster lehnen darf ;) )
    und
    >Der Carsten hat den Artikel mit der Anleitung schon angefangen… ;)

    Klar hat hier keiner einen Anspruch darauf und klar habt ihr viel zu tun, aber wenn dieser Blog bei google unter dem Thema gefunden wird und dann so ein Hinweis des Autors auftaucht, ‘wartet’ man natürlich auf das angekündigte. (Eben weil es nicht viel vergleichbar brauchbares gibt)
    Klar war der Ton von “Dina” nicht in Ordnung… aber dann macht doch einfach eine klare Ansage dass ihr das Script irgendwann mal, wenn wieder ein klein wenig Luft ist, eventuell online stellt. Dann kann man sich darauf einstellen und gut.
    Nur mit einer Ansage, ‘schaut auf den Blog irgendwann kommt das’, Leser auf den Blog zu ziehen ist wie wenn ich sage ‘Lest meinen Blog, irgendwann in nächster Zeit verschenke ich hier im Blog einen PC/Mac/500€’. Klar, dann kommen die User und schauen jeden Tag – und fühlen sich irgendwann verarscht weil nix verschenkt wird ;-)

    My 5 cents…

    PS: Würde mich dennoch über das Script freuen, vielleicht kommt’s ja noch irgendwann.

    PPS: Noch ein Variante wäre doch, ihr verkauft eure Dienstleistung direkt und gebt das Script nur gegen eine Paypal Zahlung ab. Hätte ich auch kein Problem mit.

  • Jan Kappen sagt:

    So,
    ab jetzt ist hier Ruhe ;)
    Der Carsten hat das Script nach ungefähr einer halben Mann-Woche fertiggestellt und dokumentiert, das ganze kann unter folgendem Link heruntergeladen werden:

    https://www.hyper-v-server.de/tools/hyper-v-sicherung-mittels-powershell-script/

    Greetz,
    Jan

  • Heeft er iemand een nette manier om een vm te herstarten zonder het gebruik van de requeststatechange(10)?

  • >