RSS

Hyper-V Sicherung mittels Powershell Script

Sicherung ist eines der meist vernachlässigsten und dennoch wichtigsten Aufgaben in der IT. Hand aufs Herz, nachdem man eine virtuelle Maschine laufen hat, kann es schon mal vorkommen das man das Sichern vergisst. Damit das in unseren Projekten nicht passiert, haben wir nach einer Lösung gesucht, die es uns mit Bordmitteln ermöglicht, ein konsistentes Backup einer Hyper-V VM zu fahren. Vorweg aber etwas das uns sehr am Herzen liegt:

Da Daten und deren Sicherungen für Unternehmen einen existenziellen Wert darstellen, möchten wir hier ausdrücklich darauf hinweisen, dass wir für die hier bereitgestellten Skripte und Methoden  keinerlei Haftung übernehmen und Sie diese auf eigene Gefahr einsetzen.

Wie sieht nun unsere Methode aus? Hyper-V bringt seit der ersten Version die Möglichkeit mit sich eine VM zu exportieren. Bei diesem Vorgang werden die kompletten Daten, d. h. die Platten (VHDs), die Snapshots (falls vorhanden) und die Konfiguration, in einem Format in ein Verzeichnis kopiert,  so dass diese jederzeit auf einen anderen Host kopiert und wieder importiert werden können. Daraus kann sich ein Problem ergeben: Da die Daten kopiert werden, und das nur auf einer Platte des Hosts passieren kann (keinem Netzlaufwerk), benötigt die Maschine mindestens den gleichen freien Plattenplatz, wie die gesamte VM belegt.

Weiterhin kann die VM beim Exportvorgang nicht laufen, das heißt sie ist entweder heruntergefahren (was wir präferieren) oder sie ist zumindest gespeichert. Diese Ausfallzeit der VM kann, je nach Größe der VHDs und Snapshots, schon einige Minuten dauern. Als Beispiel dauert der Export unseres Exchange Server mit ca. 80 GB um die 30 Minuten. Natürlich möchten wir den Exportvorgang nicht von Hand anstoßen, sondern automatisieren. Deswegen haben wir uns ein PowerShell Script geschrieben, das mittels Aufgabenplaner in regelmäßigen Interwallen diesen Exportvorgang durchführt. Wenn Sie möchten kopiert dann dieses Script, nach Abschluss des Exportvorgangs, die Daten auf einen beliebigen Netzwerkpfad, damit die Daten nicht nur auf dem Host liegen.

Hier der grobe Ablauf des Scripts:

  1. Maschine herunterfahren oder schlafen legen
  2. Exportvorgang auf lokalen Datenträger
  3. Maschine starten oder aufwecken
  4. Gegebenenfalls den Export auf Netzwerkfreigabe kopieren

Damit unser PowerShell Script funktioniert, benötigen wir die PSHyperv Library die James O’Neill entwickelt und unter  CodePlex (Download unter http://www.codeplex.com/psHyperV) frei zur Verfügung stellt.  Achtung: die aktuelle Version funktioniert nur mit der PowerShell V2, allerdings auf beiden Hyper-V Varianten. Zum reibungslosen Installieren der Library sind folgende Schritte vorab durchzuführen:

  1. Sie laden das ZIP-Archive in ein Verzeichnis (z.B. C:\Temp) herunter
  2. imageSie wenden das Sysinternal Tool “streams” an, um die Kenzeichnung, dass die Datei aus dem Internet geladen wurde (“Zone.Identifier”), zu entfernen
  3. Sie entpacken das Archive in einem temporären Verzeichnis (z.B. c:\Temp)

imageDanach führen Sie die Installation des Library durch: Rechtsklick auf das “install.cmd” Script und auswählen “Als Administrator ausführen”. Jetzt werden Sie gefragt, ob Sie “.Net Framework 2” und “PowerShell” installiert haben. Ist das nicht der Fall, dann brechen Sie bitte die Installation ab und holen dieses nach.image Erfüllen Sie alle Voraussetzungen, dann drücken Sie “Enter” und das Script kopiert die Library und nimmt alle erforderlichen Einstellungen vor. In dem Screenshot sehen Sie zwei Fehler, die auf einer nicht Core Installation auftreten. Diese Fehler können Sie ignorieren und bestätigen einige weitere Male die Installationsschritte.

Nach erfolgreicher Installation sollte ein Powershell-Fenster aufgehen, indem Sie die Installation mit dem PowerShell Befehl:

get-command –module HyperV

überprüfen können.

Nach der erfolgreichen Installation der PsHyperV Bibliothek laden Sie unser PowerShell Script “HyperV-Backup.ps1” herunter (die aktuelle Version finden Sie am Ende des Artikels). Das ZIP Archive entpacken Sie in einem Verzeichnis z.B. “C:\Tools”. Auch hier sollten Sie das Sysinternal Tool “streams” anwenden, damit Powershell das Script ausführen kann.

Einen ersten Überblick über die Scriptoptionen erhalten Sie, wenn sie das Script nun aus einer Powershell (Achtung Administratoren Rechte erforderlich) mit dem Argument “-?” oder “-help” aufrufen z.B.: “C:\Tools\HyperV-Backup.ps1 –?”. Als Hilfestellung für den Einsatz gebe ich im folgenden einige Beispiele, wie Sie dieses Script benutzen können:

1. lokaler Export eines VMs ohne Neustart:

C:\Tools\HyperV-Backup.ps1 –VM W2K8-VM –ExportPath D:\Exports –TurnOff

Schritte die das Script ausführt:

  1. die VM "W2K8-VM” wird heruntergefahren
  2. Sie wird in das Verzeichnis C:\Exports\W2K8-VM exportiert und ein dort gegebenenfalls vorhandener alter Export gelöscht

2. lokaler Export eines VMs mit Startverzögerung um 60 Sekunden:

C:\Tools\HyperV-Backup.ps1 –VM W2K8-VM –ExportPath D:\Exports –StartDelay 60

Schritte die das Script ausführt:

  1. die VM "W2K8-VM” wird heruntergefahren
  2. Sie wird in das Verzeichnis C:\Exports\W2K8-VM exportiert und ein dort gegebenenfalls vorhandener alter Export gelöscht
  3. schlafe 60 Sekunden
  4. die VM wird wieder gestartet

3. lokaler Export einer VM mit Kopie auf Sicherungsserver:

C:\Tools\HyperV-Backup.ps1 –VM W2K8-VM –ExportPath
D:\Exports  -RemotePath \\Storage\Sicherung$ –verbose

Schritte die das Script ausführt:

  1. die VM "W2K8-VM” wird heruntergefahren
  2. Sie wird in das Verzeichnis C:\Exports\W2K8-VM exportiert und ein dort gegebenenfalls vorhandener alter Export gelöscht
  3. die VM “W2K8-VM” wird wieder gestartet
  4. Der Export wird in die Netzwerkfreigabe “\\Storage\Hyper-V-Sicherungen$\W2K8-VM” kopiert und ein dort gegebenenfalls vorhandener alter Export gelöscht
  5. Die Export unter “D:\Exports\W2K8-VM” wird gelöscht

Zusätzlich gibt das Script, wegen des Schalters –verbose einige Informationen auf der Konsole aus.

4. Export einer VM die auf einem anderen System liegt mit Kopie auf Sicherungsserver:

C:\Tools\HyperV-Backup.ps1 –VM Debian1-VM –Server Hyperv5
–ExportPath D:\Exports  -SaveState -RemotePath
\\Storage\Sicherung$ –verbose

Schritte die das Script ausführt:

  1. die VM "Debian1-VM” welche sich auf Hyper-V Host “Hyperv5” befindet wird gespeichert (Option
    –SaveState)
  2. Sie wird auf “Hyperv5” in das Verzeichnis D:\Exports\Debian1-VM exportiert und ein dort gegebenenfalls vorhandener alter Export gelöscht
  3. die VM “Debian1-VM” wird wieder aufgeweckt
  4. Der Export wird in die Netzwerkfreigabe “\\Storage\Hyper-V-Sicherungen$\Debian1-VM” kopiert und ein dort gegebenenfalls vorhandener alter Export gelöscht
  5. Die Export unter “D:\Exports\W2K8-VM” wird gelöscht

Zusätzlich gibt das Script wegen des Schalters –verbose einige Informationen auf der Konsole aus.

Automatisierung der “Sicherung” mit dem Aufgabenplaner

Um das Script automatisch imagezu einem bestimmten Zeitpunkt auszuführen, bietet sich der Aufgabenplaner an. Wichtig dabei ist, dass man den Befehl mit Administratoren Rechten ausführt. Im Folgenden findet man einige Screenshots wie man einen Task in der Aufgabenplanung anlegt.

Zuerst öffnen Sie die Aufgabenplanung (zu finden unter “Programme->Verwaltung”). Nach dem Start wählen Sie im mittleren Bereich durch Rechtsklick den Menüpunkt “Einfache Aufgabe erstellen…”aus.

Nun erscheint der Wizard, geben Sie als erstes dem Task einen Namen z. B. “Sicherung vaddc2” und entscheiden sich dann für ein Wiederholungsintervall und eine Ausführungszeit.SNAGHTML60a3afIm folgenden Dialog wählen Sie “Programm starten” und nach “Weiter” müssen Sie nun unter dem Feld “Programm/Script” den Pfad der “Powershell.exe” eingeben (am einfachsten navigieren Sie nach Bestätigen des Button “Durchsuchen…” in das Verzeichnis “C:\Windows\system32\WindowsPowerShell\v1.0” und wählen dort die powershell.exe aus). Jetzt geben Sie im Feld “Argumente hinzufügen (optional)” das PowerShell Script mit Pfad an und ergänzen die benötigten Parameter (im Screenshot sehen Sie ein Beispiel).

SNAGHTML667456

Nach Bestätigen von “Weiter” gelangt man in den Dialog “Fertig stellen”. Hier ist wichtig, dass Sie das Feld “Bei klicken auf Fertig stellen, die Eigenschaften dieser Aufgabe öffnen” anhaken und dann erst auf “Fertig stellen” klicken.

image

Jetzt öffnen sich die Eigenschaften des Tasks und wir wählen im Reiter “Allgemein” die Einstellungen “Unabhängig von der Benutzeranmeldung ausführen” und “Mit höchsten Privilegien ausführen” aus. Dann wechseln wir auf den Reiter “Einstellungen” und verändern den Bereich “Aufgabe beenden, falls sie länger ausgeführt wird als” auf einen Wert der etwas länger als die Zeit ist, die unsere Job normeilerweise brauchen sollte.

SNAGHTML764809

Nach betätigen von “OK” werden jetzt noch die Credentials abgefragt, unter der der Task ausgeführt werden soll. Fertig: Sie haben den ersten Task zum automatischen Sichern angelegt.

Wenn Sie Anregungen, Kritik oder Verbesserungsvorschläge zu diesem Script haben, dann mailen Sie uns diese doch unter:

emailFalls dieses Script sehr nützlich für Sie ist, dann würden wir uns über eine positive Beurteilung unser Hyper-V PinPoint Lösung sehr freuen.

Download-Link:

Version 1.0: HyperV-Backup-V1.0.zip
Update 12. Juli 2011: Ergänzung der Parameter TurnOff (Ausschalten nach Export) und StartDelay (Startverzögerung um x Sekunden)

Version 0.91: HyperV-Backup-V0.91.zip
Update 14. Juli 2010: Fix beim Export eines Remote Systems. Es wurde beim Export einer Remote VM nicht der entfernte Export Pfad geprüft sondern fälschlicherweise der Lokale Pfad.

Version 0.9: HyperV-Backup-V0.9.zip
Erste Version

Eingabe Informationen

Unter: Tools

Tags:

Über den Autor: Dipl. Ing. Carsten Rachfahl ist seit mehr als 20 Jahren in der IT-Branche tätig. Er ist einer der geschäftsführenden Gesellschafter der Rachfahl IT-Solutions GmbH & Co. KG und für den technischen Bereich verantwortlich.

96 Responses to “Hyper-V Sicherung mittels Powershell Script”

  1. Axel K. sagt:

    Gute Anleitung,
    werde das mal ausprobieren ! Danke !

  2. Axel K. sagt:

    Funktioniert gut und ist gar nicht so langsam ! Danke !!!!!

  3. Martin sagt:

    Hmm… warum nicht mit Windows Backup?

  4. Jan Kappen sagt:

    Weil wir eine Lösung haben wollten, bei der wir einen kompletten Export in der Hand halten…

  5. Marco sagt:

    Ist nun auch bei uns im Einsatz. Vielen Dank für das Script und die Anleitung! :)

  6. ProjektC sagt:

    Gibt es auch eine Doku was genau das Script in welchen Bereichen macht ?
    Würde eigentlich nur ein Scrip für Beenden brauchen und dann ein Script fürs Starten.
    Dazwischen würde Acronis die Hyper-V sichern.

    Leider ist für mich diese Out of the Box Lösung nicht ganz ersichtlich was von dem script gebraucht wird oder nicht.

  7. Hallo ProjektC,

    für deinen Fall (nur Herunterfahren und Hochfahren) gibt es in der Hyper-V Library (Link im Artikel) die PowerShell CmtLets:

    - Shutdown-VM (Herunterfahren mit installierten ICs)
    - Suspend-VM (Pausieren auch ohne ICs)
    - Start-VM (Hochfahren)

    Du musst aber trotzdem wie beschrieben die Hyper-V Library installieren.

    Gruss Carsten Rachfahl

  8. Rico sagt:

    Das klinkt alles sehr lecker nur leider gibt es einen fehler beim Download des Scripte.

    404 – Datei oder Verzeichnis wurde nicht gefunden.

    MFG

  9. Hallo Rico,

    wir haben alle Links überprüft -> gehen alle. Vieleicht unterbindet etwas (Virenscanner etc.) den Download einer ZIP-Datei aus dem Internet?

    Gruß
    Carsten Rachfahl

  10. michael sagt:

    Hallo. Gibt es ein skrip, oder wie ist der Befehl, mit dem ich einfach eine VM in Hyper-V starten oder herunterfahren kann?

    BEsten Dank

  11. Hallo Michael,

    sie mal weiter oben meine Antwort vom 11. August in den Komentaren.

    Gruß Carsten

  12. Thomas sagt:

    Hallo Carsten,

    vielen Dank für die sehr gute Anleitung und das Skript.

    Vorab: ich bin Novize was Powershell betrifft und auch noch relativ unerfahren mit W2K8 Server (R2). Vielleicht deshalb auch meine dämliche Fragerei. Ich habe W2K8 Server R2 installiert in der Standard-Version (180-Tage-Eval). Die Hyper-V Bibliotheken sind installiert. PowerShell 2.0 ist installiert (geprüft: $psVersionTable)

    Wenn ich das Skript in einer PS aufrufe (die PS mit Adminrechten gestartet), dann funktioniert es.

    Wegen Automatisierung des Backups: Das *.ps1 per Doppelklick ausgeführt, öffnet den Notepad … ?!?

    Eine Steuerungs-BAT geschrieben,
    cd C:\Windows\system32
    powershell C:\Skripte\Hyper-V\HyperV-Backup.ps1 VM MyVM ExportPath F:\Save

    und mit Admin-Rechten gestartet liefert das hier:
    powershell C:\Skripte\Hyper-V\HyperV-Backup.ps1 ûVM MyVM ûExportPath F:\Save
    WARNUNG:
    Falscher Parameter: Auf den ExportPath ûExportPath kann nicht zugegriffen
    werden.

    û …

    Es greifen auch die von Microsoft vorgeschlagenen Tipps mit vorangestelltem & und einschließen des Dateinamens in ‘ ‘ leider nicht (fehlende Parameterübergabe?)

    Ach so, eine Info noch .. ich arbeite in einer Remotesession auf dem Hyper-V Server.

    Kannst Du oder ein anderer bitte mit einem Tipp weiter helfen?

    Vielen Dank,
    Thomas

  13. Thomas sagt:

    Hallo,

    schon wieder ich … ich habe die Lösung gefunden. Beim nochmaligen Lesen meines Posts habe ich gesehen, dass im Aufruf die – Zeichen fehlen.

    Die Zeichen stehen in meinem Batch-Skript aber definitiv drin, werden aber bei der Abarbeitung falsch interpretiert als û.

    Nun war es so, dass ich das Batch nicht im Notepad geschrieben habe, sondern den Aufruf kopiert und in Notepad eingefügt hatte. Ich meine usrprünglich aus Eurer Website, die ich aber auf meinem XP-Notebook in Firefox betrachtet habe, dort also Copy und in die Remotesession per Paste eingefügt – womöglich war der “Übergang” zu hart.

    Nach dem erneuten Editieren und Speichern des Batch-Skriptes funktioniert es nun.

    Gruß,
    Thomas

    PS: Warum ein Steuerungs-Batch? Ich teste immer ganz gerne vorab und möchte Ergebnisse/Meldungen sehen, bevor ich automatisiere. Schließlich sollen keine hängenden Prozesse einen Server ausbremsen (wie in meinen Anfangstagen beim Skripting mal geschehen).

  14. michael sagt:

    Danke.

    Ich habe die “Hyper-V Library” installiert. Nach der Installation öffnet sich der PowerShell Fenster.

    In diesem funktionieren die Befehle “shutdown-vm” und start-vm”.

    Öffne ich aber manuel ein neues Powershell Fenster, kennt dieses die Befehle nicht. (“start-vm” wurde nicht als Name eined Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt…)

    woran kann das liegen?
    besten Dank für die Unterstützung

  15. Thomas sagt:

    Hallo,

    ich habe wieder eine Frage zum Skript bzw. besser gesagt zum Zurückspielen.

    Nach dem Importieren der zuvor gesicherten (exportierten) und für Testzwecke gelöschten VM (HyperV-Manager und im Explorer die Verzeichnisse) fiel mir dann auf, dass Hyper-V sich scheinbar nicht mehr um die ursprünglichen Pfade kümmert.
    Die importierte VM startet problemlos – aber die Pfade sind Default wie bei einer neuen VM. Bei der Erstellung der VMs wähle ich die Option “Virtuellen Computer an einem anderen Speicherort speichern”. Somit kommt alles, was die VM betrifft in 1 Verzeichnis: dies der Übersichtlichkeit halber, mir sind flache Mülleimer-Strukturen zuwider.

    Nun wollte ich die importierte VM anpassen:
    a) XML-File editieren: Speicherpfade zu den VHDs
    b) XML-File verschieben: an den Ort, wo sie vorher war (die VM fliegt raus aus dem HyperV-Manager) und
    c) Verknüpfung anpassen (C:\Users\All Users\Microsoft\Windows\Hyper-V\Virtual Machines) oder

    Tja: beim Schritt c) gibt’s Probleme: Anpassen der Verknüpfung geht nicht, neue Verknüpfung wird im Hyper-V Manager V2 nicht erkannt.

    Man könnte alternativ eine neue VM erstellen und die VHDs kopieren und auswählen. Aber werden dabei auch
    - Snapshots (wir habe nicht vor welche zu erstellen, aber wer weiß)
    - RAM-Inhalte, die beim Suspend hergestellt wurden
    berücksichtigt?

    Hat jemand einen Tipp, wie ich die Konfiguration anpasen kann? Das Skript ist nämlich klasse!

    Mache ich etwas falsch?

    Wäre das Herunterfahren der gewünschten VM und die Sicherung des Verzeichnisses eine Option, v.a. bei DB-Server-VMs (wenn auch zeitlich aufwändiger)?

    Danke und Gruß,
    Thomas

  16. Thomas sagt:

    Hallo Michael,

    im Backup-Skript wird die Bibliothek angeladen, ab Zeile 147 (das Nachfolgende aus dem Skript wurde von mir gekürzt).

    # Fuktion lädt PSHyperV Library (aber nur wenn sie nicht schon geladen ist)
    #
    function LoadPSHyperV
    {

    }

    Gruß,
    Thomas

  17. Thomas sagt:

    Hallo Michael,

    ich hab’s eben getestet: Ableitung der Eingaben aus dem Skript … funktioniert Bestens.

    Annahmen: Die VM heißt HyperV-G01 und liegt auf lokalem Server.

    1. PS mit Admin-Rechten starten. Prompt der PS
    PS C:\Windows\system32>
    2. Library laden:
    PS C:\Windows\system32> import-module hyperv
    3. Deine VM (HyperV-G01) starten auf lokalem Server (.)
    PS C:\Windows\system32> start-vm hyperv-g01 -Server . -Force -Wait
    4. Startprozess der VM: in der PS am türkis-farbenen Hintergrund und
    den Kringeln zu sehen oder auch im HyperV-Manager beobachten
    5. Meldung nach dem Start der VM
    OK
    6. Prompt der PS
    PS C:\Windows\system32>exit

    Ich hoffe, das hilft Dir weiter.

    Gruß,
    Thomas

  18. michael sagt:

    sehr gute erklärung so klappt das tip top. zum herunterfahren der VM muss ich den befehl noch mit “j” bestätigen. kann ich das auch gleich hinzufügen?

    shutdown-vm hyperv-g01 /j hat nicht funktioniert

    Besten Dank

  19. michael sagt:

    und das ganze funktioniert ja nur, wenn mann die PS als administrator ausführt.

    Wie kann ich ein Skript als Administrator ausführen lassen?

    Will für jede meiner VM in Hyper-V ein Skript zum hochfahren und zum runterfahren machen.

  20. Thomas sagt:

    Hallo Michael,

    im Skript in Zeile 200 steht das Cmdlet “Invoke-VMShutdown”
    Invoke-VMShutdown $myVm -Server $Server -Force -ShutdownTimeOut $timeout

    Das leite ich auf unser Beispiel ab (er arbeitet hier mit Variablenwerten, die ganz am Anfang gesetzt werden – wobei ich nicht weiß, wofür die 600 stehen (Sekunden), ich habe eben 2x erfolgreich mit den Werten 5 und 60 getestet – die VM fuhr jedesmal sofort herunter):
    Invoke-VMShutdown HyperV-G01 -Server . -Force -ShutdownTimeOut 600

    Die Cmdlets der Library können noch viel mehr:
    http://pshyperv.codeplex.com/

    Da werde ich mich mal umtun :-)

    Dort auch ein Diskussionsforum, usw.
    Als Suchbegriff Invoke-VMShutdown: in einem Post wird erklaert von jamesone (=Autor der Library?), dass der shutdownparameter mit dem Dienste Stop und dem erneuten Start zu tun hat. Der Wert muss in Sekunden sein –> 600 s = 10 Minuten

    Gruß,
    Thomas

  21. Thomas sagt:

    Hi Michael,

    zum zweiten Post:

    Wenn die VM beim Start des Hyper-V Servers gestartet werden soll bzw. heruntergefahren werden soll beim Herunterfahren des Servers: Einstellungen der VM > Ziemlich weit unten (ist aber hier u.U. Off Topic)

    Ansonsten PS-Skripte schreiben für Start und Stop, die die Endung .ps1 haben (die Lib anladen, Kommandos zum Starten/ Stoppen ausführen … so wie das Backup-Skript), evt. noch ein Steuerungsbatch (siehe mein 1. Posting, weil sich bei mir der Notepad geöffnet hat, wenn ich beim Aufruf des PS-Skriptes nicht powershell starte) und dann via Aufgabenplanung (Start > Programme> Verwaltung > Aufgabenplanung) eine neue Aufgabe planen. Dabei Optionen “Mit erhöhten Rechten ausführen” und “Auch dann ausführen, wenn Benutzer nicht angemeldet ist”, OS-Benutzer mit entsprechenden Rechten verwenden. Evt. andere Trigger (Auslöse-Ereignisse) statt des Zeitpunkts wählen.

    Lies Dich bitte in das Backup-Skript von Carsten Rachfahl ein – das erscheint zunächst kopmplex, ist sehr hilfreich. Denn vor dem Stoppen / Starten sollte man Stati der VM abfragen. Und das macht das Backup-Skript.

    Gruß,
    Thomas

  22. Sandro sagt:

    Hallo,

    Nach kurzen durcharbeiten der Anleitung ging es dann auch ziemlich schnell zum Ziel.
    Meine Frage nun nach den erfolgreichen exportieren: Gibt es auch eine Variante die es zulässt während des laufenden Betriebes zu exportieren?

    gruß Sandro

  23. Hallo Sandro,

    leider Nein. Der Export kann nur mit einer Heruntergefahrenen oder Gespeicherten VM gemacht werden. Für Laufzeit Kopie müsste mit dem SnapShot Provider gearbeitet werden und das bringt entliche andrer Hürden mit sich. Ich habe da ein Video von der TechED 2010 NA gesehen in dem einiges zu SnapShot gezeigt wird. Schau doch mal in meinem Artikel zu den Videos von der TechED 2010.

    Gruß Carsten

  24. michael sagt:

    Hallo Thomas

    Dein Vorschlag hat zwar Grundsätzlich funktioniert, hilft mir aber leider nicht wirklich weiter.

    Mit einem Steuerungs.bat in der Aufgabenplanung (wegen den Administratorenrechte), welches das PS Skript ausführt hat es funktioneirt, die VM zu starten oder herunterzufahren.

    Situation: ich habe ein HTML File, auf welches jeder Mitarbeiter zugriff hat, darin sind alle VM die ich in HyperV habe aufgelistet und ein Link auf RemoteDesktop Files für die verbindung auf die VM ist gleich dabei. Im selben File wäre jetzt noch ein Link benötigt, welcher die VM starten oder herunterfahren würde. Und die Aufgabe kann ich wohl kaum verlinken?

    Gibt es keine eifnachere möglichkeit, wie das PowerShell Skript als Administrator ausgeführt werden kann?

    Besten Dank

  25. Thomas sagt:

    Hallo Michael,

    ein Vorschlag, wird Dir aber nach Deinen Vorschlag wohl nicht unbedingt weiterhelfen: in der Aufgabenplanung versuchen, einen anderen Trigger zu verwenden, z.B. “Anmeldung”. Eine zusätzliche RDP Session gegen den hyper-V Server führt dann nur Aktion ein Skript aus, das eine Abfrage enthält: Was möchten Sie tun? 1) Start 2) Stopp
    3) gar nichts :-))))
    Nach Abarbeitung des Skriptes wird der User wieder abgemeldet vom Hyper-V Server.

    Abfrage in Batch
    rem Bildschirmausgabe
    echo VM starten oder Stoppen
    echo =======================
    echo .
    echo 1 Start
    echo 2 Stopp
    echo 3 Nichts wie weg hier
    echo .
    set /p Antwort=”Bitte waehlen Sie (1-3): ”

    rem Sprung, wird Nonsens eingegeben –> Abbruch
    goto :Sprung_%Antwort%

    :Sprung_1
    powershell.exe [Dein-Startskript]

    :Sprung_2
    powershell.exe [Dein-Stoppskript]

    :Sprung_3
    exit

    Oder als Trigger ein Ereignis a la Eventlog-Eintrag (Sicherheit, Überwachung der Remoteanmeldung .. oder irgendein Ereignis, welches Deine HTML-Seite generiert), welches dann ein Powershellskript (Steuerungs-Batch) mit erhöhten Rechten eines Stellvertreter-Users ausführt.

    Inwiefern aber Eure Sicherheitsrichtlinen unterlaufen werden …?

    Gruß,
    Thomas

  26. Jens sagt:

    Hallo Carsten,

    schönes Script!

    Ich werde es nach einigen Tests auch produktiv einsetzen.
    Das Kopieren mache ich allerdings per Robocopy, aber der Export ist eh das Wichtigste.

    Ist eine Hilfe in Umgebungen, die keine Cluster betreiben können.
    Mit Protokollierung über >> log.log ist das eine saubere Sicherung.

    Danke

    Jens

  27. Frederik sagt:

    Hallo Carsten,

    vielen Dank für die super Anleitung!

    Was mir noch aufgefallen ist: Man muss den Rechner neustarten, damit das HyperV Modul vom Script automatisch gefunden wird ;)

    Vielen Dank
    Frederik

  28. Martin sagt:

    Hallo zusammen,
    habe da ein “denke” kleines Problem, komme aber nicht weiter.

    Habe die Library installiert und es öffnet sich eine Powershell, wenn ich nun in dieser Powershell das Script starte C:\Tools\hyperV-Backup.ps1 dann klappt alles. Die Virtuelle Maschine wird herunter gefahren, der Export durchgeführt und anschließend wieder hochgefahren.

    Schließe ich nun die Powershell und öffne erneut eine als Administrator, bekomme ich verschiedene Fehlermeldungen z.B. das Script wurde auf diesem Computer deaktiviert oder das in keinem Modulverzeichnis eine gültige Moduldatei gefunden wurde bla,bla,bla

    Installiere ich dann noch einmal die Library und starte dann in der sich öffnenden Shell das Script, klappt es.

    Was mache ich falsch bzw. wo kann das Problem liegen? Bin leider kein ScriptKing. Ich möchte lediglich dass ich anschließend über den Taskplaner das Script irgendwie zum laufen bekomme, das mir einmal am Tag ein export der VM gemacht wird. Das Problem ist, ich habe 11 Server an 11 Standorten und möchte da nicht jeden Tag Remote den Export starten.

    HAt jemand eine Idee oder einen Tipp für mich?

    Tausend Dank schonmal!
    Martin

  29. Jasper sagt:

    Herzlichen Dank für dieses Tolle Skript!!!

  30. Ingo Fritz sagt:

    Hallo zusammen!

    Danke für den Beitrag, ich hatte ein Script zum starten/stoppen von Hyper-V Servern via Powershell gesucht und das ist ja genau das, was ich suchte! :-)
    Dann kann ich das ja gleich in unsere Kundenoberfläche einbauen, unsere Hyper-V Hosting Kunden wird’s freuen.

    Viele Grüße aus Nürnberg,
    Ingo

  31. Matthias sagt:

    PS C:\Windows\system32> Save-VM meineMaschine
    Get-WmiObject : Invalid class
    At C:\Program Files\modules\Hyperv\VM.ps1:70 char:26
    + Get-WmiObject <<<

    kann mir jemand sagen, wo genau da das Problem liegt ?

    Danke =)

  32. Matthias sagt:

    so nochmal ;)

    Get-WmiObject : Invalid class At C:\Program Files\modules\Hyperv\VM.ps1:70 char:26
    + Get-WmiObject <<<< -computername $Server -NameSpace HyperVNamespace -Query $WQL | Add-Member -MemberType ALIASPROPERTY -Name "VMElementName" -Value "ElementName" -PassThru
    + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

  33. Hallo Matthias,

    es sieht für mich so aus als ob die “PSHyperv Library” nicht richtig installiert ist. Was gibt der Befehl “get-command –module HyperV” aus? Weitere Frage: hast du die PowerShell V2 installiert?

    Gruß Carsten

  34. Matthias sagt:

    PS C:\Windows\system32> $psversiontable

    Name Value
    —- —–
    CLRVersion 2.0.50727.4206
    BuildVersion 6.0.6002.18111
    PSVersion 2.0
    WSManStackVersion 2.0
    PSCompatibleVersions {1.0, 2.0}
    SerializationVersion 1.1.0.1
    PSRemotingProtocolVersion 2.1

    PS C:\Windows\system32> get-command -module HyperV

    CommandType Name Definition
    ———– —- ———-
    Alias Add-NewVMHardDisk Add-VMNewHardDisk
    Function Add-VMDisk # .ExternalHelp MAML-VMDisk.XML…
    Function Add-VMDrive # .ExternalHelp MAML-VMDisk.XML…
    Function Add-VMFloppyDisk # .ExternalHelp MAML-VMDisk.XML…
    Function Add-VMKVP # .ExternalHelp MAML-VMConfig.XML…
    Function Add-VMNewHardDisk # .ExternalHelp MAML-VMDisk.XML…
    Function Add-VMNIC # .ExternalHelp MAML-VMNetwork.XML…
    Function Add-VMPassThrough # .ExternalHelp MAML-VMDisk.XML…
    Function Add-VMRASD # .ExternalHelp MAML-VMConfig.XML…
    Function Add-VMSCSIController # .ExternalHelp MAML-VMDisk.XML…
    Function Add-ZIPContent <#…
    Alias Apply-Snapshot Restore-VMsnapshot
    Alias Choose-List Select-List
    Alias Choose-Tree Select-Tree
    Alias Choose-VM Select-VM
    Alias Choose-VMExternalEthernet Select-VMExternalEthernet
    Alias Choose-VMNIC Select-VMNIC
    Alias Choose-VMPhysicalDisk Select-VMPhysicalDisk
    Alias Choose-VMSnapshot Select-VMSnapshot
    Alias Choose-VMSwitch Select-VMSwitch
    Alias compact-VHD Compress-VHD
    Function Compress-VHD # .ExternalHelp MAML-VMDisk.XML …
    Function Connect-VHDParent # .ExternalHelp MAML-VMDisk.XML …
    Function Convert-DiskIDtoDrive # .ExternalHelp Maml-Helper.XML…
    Function ConvertTo-Enum …
    Function Convert-VHD # .ExternalHelp MAML-VMDisk.XML…
    Function Convert-VMState …
    Function Copy-ZipContent <#…
    Function Dismount-VHD # .ExternalHelp MAML-VMDisk.XML…
    Function Expand-VHD # .ExternalHelp MAML-VMDisk.XML…
    Function Export-VM # .ExternalHelp MAML-VM.XML…
    Function Get-FirstAvailableDriveLetter # .ExternalHelp Maml-Helper.XML…
    Function Get-VHD # .ExternalHelp MAML-VMDisk.XML…
    Function Get-VhdDefaultPath # .ExternalHelp MAML-VMDisk.XML…
    Function Get-VHDInfo # .ExternalHelp MAML-VMDisk.XML…
    Function Get-VHDMountPoint # .ExternalHelp MAML-VMDisk.XML…
    Function Get-VM # .ExternalHelp MAML-VM.XML…
    Function Get-VMBuildScript # .ExternalHelp MAML-VM.XML…
    Function Get-VMByMACAddress # .ExternalHelp MAML-VMNetwork.XML…
    Function Get-VMClusterGroup …
    Function Get-VMCPUCount # .ExternalHelp MAML-VMConfig.XML…
    Function Get-VMDisk # .ExternalHelp MAML-VMDisk.XML…
    Function Get-VMDiskByDrive # .ExternalHelp MAML-VMDisk.XML…
    Function Get-VMDiskController # .ExternalHelp MAML-VMDisk.XML…
    Function Get-VMDriveByController # .ExternalHelp MAML-VMDisk.XML…
    Function Get-VMFloppyDisk # .ExternalHelp MAML-VMDisk.XML…
    Function Get-VMHost # .ExternalHelp MAML-VM.XML…
    Function Get-VMIntegrationComponent # .ExternalHelp MAML-VMConfig.XML…
    Function Get-VMKVP # .ExternalHelp MAML-VMConfig.XML…
    Function Get-VMLiveMigrationNetwork …
    Function Get-VMMemory # .ExternalHelp MAML-VMConfig.XML…
    Function Get-VMNIC # .ExternalHelp MAML-VMNetwork.XML …
    Function Get-VMNICport # .ExternalHelp MAML-VMNetwork.XML…
    Function Get-VMNICSwitch # .ExternalHelp MAML-VMNetwork.XML…
    Function Get-VMNICVLAN # .ExternalHelp MAML-VMNetwork.XML…
    Function Get-VMProcessor # .ExternalHelp MAML-VMConfig.XML…
    Function Get-VMSerialPort # .ExternalHelp MAML-VMConfig.XML…
    Function Get-VMSettingData # .ExternalHelp MAML-VMConfig.XML…
    Function Get-VMSnapshot # .ExternalHelp MAML-VMSnapshot.XML…
    Function Get-VMSnapshotTree # .ExternalHelp MAML-VMSnapshot.XML…
    Alias Get-VMState Get-VMSummary
    Function Get-VMSummary # .ExternalHelp MAML-VM.XML…
    Function Get-VMSwitch # .ExternalHelp MAML-VMNetwork.XML …
    Function Get-VMThumbnail # .ExternalHelp MAML-VM.XML…
    Function Get-ZIPContent <#…
    Function Import-VM # .ExternalHelp MAML-VM.XML…
    Function Invoke-VMShutdown # .ExternalHelp MAML-VM.XML…
    Alias List-VMState Get-VMSummary
    Function Merge-VHD # .ExternalHelp MAML-VMDisk.XML…
    Function Mount-VHD # .ExternalHelp MAML-VMDisk.XML…
    Function Move-VM …
    Function New-VFD # .ExternalHelp MAML-VMDisk.XML…
    Function New-VHD # .ExternalHelp MAML-VMDisk.XML…
    Function New-VM # .ExternalHelp MAML-VM.XML…
    Function New-VMConnectSession # .ExternalHelp MAML-VM.XML…
    Function New-VMExternalSwitch # .ExternalHelp MAML-VMNetwork.XML…
    Function New-VMInternalSwitch # .ExternalHelp MAML-VMNetwork.XML…
    Function New-VMPrivateSwitch # .ExternalHelp MAML-VMNetwork.XML…
    Function New-VMRASD # .ExternalHelp MAML-VMConfig.XML…
    Function New-VMSnapshot # .ExternalHelp MAML-VMSnapshot.XML…
    Function New-VMSwitchPort # .ExternalHelp MAML-VMNetwork.XML…
    Function New-Zip <#…
    Function Out-Tree # .ExternalHelp Maml-Helper.XML…
    Function Ping-VM # .ExternalHelp MAML-VM.XML…
    Function Remove-VM # .ExternalHelp MAML-VM.XML…
    Function Remove-VMDrive # .ExternalHelp MAML-VMDisk.XML…
    Function Remove-VMFloppyDisk # .ExternalHelp MAML-VMDisk.XML…
    Function Remove-VMKVP # .ExternalHelp MAML-VMConfig.XML…
    Function Remove-VMNIC # .ExternalHelp MAML-VMNetwork.XML…
    Function Remove-VMRASD # .ExternalHelp MAML-VMConfig.XML…
    Function Remove-VMSCSIController # .ExternalHelp MAML-VMDisk.XML…
    Function Remove-VMSnapshot # .ExternalHelp MAML-VMSnapshot.XML…
    Function Remove-VMSwitch # .ExternalHelp MAML-VMNetwork.XML…
    Function Remove-VMSwitchNIC # .ExternalHelp MAML-VMNetwork.XML…
    Function Rename-VMSnapshot # .ExternalHelp MAML-VMSnapshot.XML…
    Function Restore-VMSnapshot # .ExternalHelp MAML-VMSnapshot.XML…
    Function Save-VM # .ExternalHelp MAML-VM.XML…
    Function Select-ClusterSharedVolume # .ExternalHelp MAML-VMDisk.XML…
    Function Select-EnumType # .ExternalHelp Maml-Helper.XML…
    Function Select-Item # .ExternalHelp Maml-Helper.XML…
    Function Select-List # .ExternalHelp Maml-Helper.XML…
    Function Select-Tree # .ExternalHelp Maml-Helper.XML…
    Function Select-VM # .ExternalHelp MAML-VM.XML…
    Function Select-VMExternalEthernet # .ExternalHelp MAML-VMNetwork.XML…
    Function Select-VMLiveMigrationNetwork …
    Function Select-VMNIC # .ExternalHelp MAML-VMNetwork.XML …
    Function Select-VMPhysicalDisk # .ExternalHelp MAML-VMDisk.XML…
    Function Select-VMSnapshot # .ExternalHelp MAML-VMSnapshot.XML…
    Function Select-VMSwitch # .ExternalHelp MAML-VMNetwork.XML…
    Function Set-VM # .ExternalHelp MAML-VM.XML…
    Function Set-VMCPUCount # .ExternalHelp MAML-VMConfig.XML…
    Function Set-VMDisk # .ExternalHelp MAML-VMDisk.XML…
    Function Set-VMHost # .ExternalHelp MAML-VM.XML…
    Function Set-VMIntegrationComponent # .ExternalHelp MAML-VMConfig.XML…
    Function Set-VMMemory # .ExternalHelp MAML-VMConfig.XML…
    Function Set-VMNICAddress # .ExternalHelp MAML-VMNetwork.XML…
    Function Set-VMNICSwitch # .ExternalHelp MAML-VMNetwork.XML…
    Function Set-VMNICVLAN # .ExternalHelp MAML-VMNetwork.XML…
    Function Set-VMRASD # .ExternalHelp MAML-VMConfig.XML…
    Function Set-VMSerialPort # .ExternalHelp MAML-VMConfig.XML…
    Alias Set-VMSettings set-vm
    Function Set-VMState # .ExternalHelp MAML-VM.XML…
    Function Show-HypervMenu <#…
    Function Show-VHDMenu <#…
    Function Show-VMDiskMenu <#…
    Function Show-VMMenu <#…
    Alias Shutdown-vm Invoke-VMShutdown
    Function Start-VM # .ExternalHelp MAML-VM.XML…
    Function Stop-VM # .ExternalHelp MAML-VM.XML…
    Alias Suspend-vm Save-vm
    Function Sync-VMClusterConfig …
    Function Test-Admin # .ExternalHelp Maml-Helper.XML…
    Function Test-VHD # .ExternalHelp MAML-VMDisk.XML…
    Function Test-VMHeartBeat # .ExternalHelp MAML-VM.XML…
    Function Test-WMIJob # .ExternalHelp Maml-Helper.XML…
    Function Test-WMIResult # .ExternalHelp Maml-Helper.XML …
    Function Update-VMSnapshot # .ExternalHelp MAML-VMSnapshot.XML…
    Function Wait-ForDisk # .ExternalHelp MAML-VMDisk.XML…

    sollte alles korrekt installiert sein

  35. Matthias sagt:

    Ok passt, wahr anscheinend doch nicht richtig mit Admin-Rechten installiert.

    Läuft super!

  36. Stephan G sagt:

    Hallo,

    danke für das super Script bei mir hat alles geklappt bis auf den Aufruf außerhalb des Powershell Fensters.

    powershell.exe -file c:\hyperV_tool\hyperV-Backup.ps1 -VM “VIRT-BLS” -exportpath “c:\hyperv_backup”

    Das Script läuft los und kommt bis VM stopped. Die Sicherung fängt dann aber nicht an zu laufen. Der Server bleibt auch unten.

    Ich will das Script über dei Aufgabenplanung nachts um 12 laufen lassen. Daher die Frage.

    Grüße
    Stephan

  37. Carsten Rachfahl sagt:

    Hallo Stephan,

    Versuch mal deinen Befehl in einem CMD mit Administratoren Rechten auszuführen. Wir starten das Script immer aus dem Aufgabenplaner. Da ist wichtig, das der Befehl mit Administratorenrechten ausgeführt wird. ich hoffe die Woche den Post um ein paar Screenshots ergänzen zu können.

    Gruß Carsten

  38. Markus sagt:

    Hallo,

    bei mir läuft das Script auf einem werdenden HyperV-CoreServer (fast) perfekt. Zumindest, wenn ich es von Hand starte. Ein mittels RSAT eingestelter geplanter Task erledigt leider nur 2/3 der Aufgaben: VM herunterfahren und VM exportieren … da ist dann leider Schluss. Der Task läuft und läuft, auf dem Core-Server wird auch die Powershell (Taskmanager) weiter ausgeführt. Beende ich den Sicherungstask im Aufgebanplaner, verschwindet auch die Powershell aus der Taskliste des CoreServers. Die Aufgabe wird aber “nicht wirklich” beendet (Status immernoch: Wird ausgeführt). Erst nach erneutem Beenden wird die Aufgabe wirklich beendet.

    Einziger Unterschied meines geplanten Tasks zur vorgestellten Vorgehensweise ist (war bis heute), dass die Zeit bis zum Beenden des Tasks (letzter Screenie) auf dem Standardwert von 3 Tagen stand. Selbstverständlich läuft die Aufgabe unter einem Adminkonto.

    Wer das Brett vor meiner Nase findet, darf es entfernen.

    Ansonsten schonmal vielen Dank für das klasse Skript.

    Gruß Markus

  39. Christoph sagt:

    Hallo,

    ich habe ein Problem. Ich habe die Anleitung befolgt und die Installdatei als Admin installiert. Danach geht auch alles ich kann die vm sichern. Wenn ich aber den Task anlege und diesen starte erhalte ich immer nur den Fehlercode 0×1 was heißt das eine falsche oder unbekannte Funktion aufgerufen wurde.

    Pfad: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    Argumente: C:\Tools\hyper-v-backup.ps1 WS-01 -Exportpath D:\hyperv exports

    Wenn ich eine Powershell öffne mit Adminrechten und das script unter C:\Tools\hyper-v-backup.ps1 ausführe läuft es auch aber aus dem Task nicht.

    Die Optionen mit höheren Rechten usw habe ich gesetzt als Konto kommt auch das Administratoren Konto zum Einsatz.

    Kann mir jemand helfen?

    Grusse Christoph

  40. Hallo Christoph,

    schau dir nochmal im Post die Befehlssyntax an. Erst mal fehlt bei dir das -VM, dann solltest du bei Argumenten die ein Lehrzeichen enthalten diese in “” setzen also “D:\hyperv exports”.

    Gruß Carsten

  41. Christoph sagt:

    Hallo Carsten,

    danke für deine Hilfe. Also das komische ist ja, wenn ich die Powershell als admin starte und C:\Tools> .\hyper-v-backup.ps1 -VM WS-01 -ExportPath “D:\hyperv exports” starte wird alles sauber gemacht.

    wenn ich beim Task erstellen die folgenden Angaben eintrage bleibt er wieder mit 0×1 stehen:

    Pfad: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    Argumente: C:\Tools\hyper-v-backup.ps1 -VM WS-01 -Exportpath “D:\hyperv exports”

    Rechte des Tasks sind die höheren und das Konto ist das Administrator Konto!?

    Ich mach irgendetwas falsch bzw. fehlt wieder wohl das Häkchen wie immer ?

    noch eine Idee?

    Gruß Christoph

  42. Christoph sagt:

    Hallo Carsten,

    noch eine Frage, kann ich mehrere VMs auf einmal sichern? oder muss ich für jede VM einen eigenen Task erstellen?

    Gruß Christoph

  43. Christoph sagt:

    Hallo Carsten,

    vielen Dank für deinen Support, habe den Fehler gefunden. Es gab wohl trotz “” ein Problem mit dem ExportPath.(Habe es in der cmd getestet) Es wurde ausgegeben das kein Zugriff möglich ist. Ich habe den Pfad auf “D:\hv_exports” geändert nun gehts, auch der Task geht nun. Wobei die Berechtigungen gepasst haben.

    Vielen Dank für die Hilfe!

    Noch eine Frage kann ich mehrere VMs in einem Backuptask sichern oder muss ich für alle VM`s einen einzelnen Task laufen lassen?

    Gruß und schönes WE

    PS: Habe auch hilfe in diesem Beitrag im mcse Forum gefunden.

    http://www.mcseboard.de/virtualisierung-82/hyperv-sicherung-powershell-aufgabenplanung-174151.html

  44. Christoph sagt:

    Hallo Carsten,

    vielen Dank für deinen Support, habe den Fehler gefunden. (Ich habe es in der cmd versucht) Es gab wohl trotz “” ein Problem mit dem ExportPath. Es wurde ausgegeben das kein Zugriff möglich ist. Ich habe den Pfad auf “D:\hv_exports” geändert nun gehts, auch der Task geht nun. Wobei die Berechtigungen gepasst haben.

    Vielen Dank für die Hilfe!

    Noch eine Frage kann ich mehrere VMs in einem Backuptask sichern oder muss ich für alle VM`s einen einzelnen Task laufen lassen?

    Gruß und schönes WE

    PS: Ich habe in diesem Forum noch Hilfe gefunden wo es auch um dieses Thema ging: http://www.mcseboard.de/virtualisierung-82/hyperv-sicherung-powershell-aufgabenplanung-2-174151.html

  45. Christoph sagt:

    Hallo Carsten,

    vielen Dank für deinen Support, habe den Fehler gefunden. (Ich habe es in der cmd versucht) Es gab wohl trotz “” ein Problem mit dem ExportPath. Es wurde ausgegeben das kein Zugriff möglich ist. Ich habe den Pfad auf “D:\hv_exports” geändert nun gehts, auch der Task geht nun. Wobei die Berechtigungen gepasst haben.

    Vielen Dank für die Hilfe!

    Noch eine Frage kann ich mehrere VMs in einem Backuptask sichern oder muss ich für alle VM`s einen einzelnen Task laufen lassen?

    Gruß und schönes WE

  46. Hallo Chistoph,

    nein du musst für jeden VM eine eignen Aufgabe machen.

    Gruß Carsten

  47. Andreas Voit sagt:

    Hallo,

    das Skript läuft einwandfrei. Danke
    Gibts es eine Möglichkeit, eine Fehlerbehandlung in das Skript einzubauen.
    Bzw. ähnlich Errorlevel bei Batch. Damit nicht jeden Tag von Hand
    überprüft werden muss, ob er Export erfolgreich durchgeführt worden ist.

  48. Alex sagt:

    Hallo, wir haben manchmal das Problem, dass ein Server nach dem Backup nicht erfolgreich hochgefahren wird. Kennt jemand das Problem?

    Ansonsten tolles Script!

  49. Hallo Alex,

    ich kenne das Problem nicht das die VM nicht hochgefahren wird. Du könntest das Script dahingehend verändern das es nach z.B. 10 Secunden nochmal schaut ob die Maschine aus ist und wenn ja sie nochmal startet.

    Gruß Carsten

  50. Steffen F. sagt:

    Hi, tolles Script…
    Nutze HyperV-R2 SP1 Core mit Powershell 2.0
    1. Frage: wie kann ich die HyperV-Module dauerhaft importieren?
    2. Frage: gibt es ein Restore-Script, wenn nein – wie läuft der Restorevorgang im Fehlerfall ab?

    Danke, Gruss Steffen

  51. Hallo Steffen,

    1. Das Script lädt beim Laufen die HyperV Library nach. Wenn das nicht geht, dann musst du noch mal deine Installation prüfen.
    2. Einen Restore machst du mit der Import Funktion von Hyper-V (also z.B. Hyper-V Manager im rechten Bereich “Virtuellen Computer importieren…”)

    Gruß Carsten

  52. Dieter sagt:

    @Alex, ich habe das Problem auch und meine auch das Problem gefunden zu haben, beim Export wird der gesamte RAM genommen und die exportierte Maschine hat danach nicht mehr genügend RAM zum starten. Eine Lösung für dieses Problem hab ich leider auch noch nicht gefunden.

  53. [...] Hyper-V Sicherung mittels Powershell Script [...]

  54. Christoph sagt:

    Hallo,

    hat jemand schon mal eine Benachrichtigung per Mail in das Script eingebaut?
    Somit könnte man sich ja komfortabel informieren lassen ob alles gut gelaufen ist?

    Grüße

  55. Brokk sagt:

    Hey das Script ist toll und erspart mir einiges an arbeit.

    meine Fragen:

    Kann man dem Script auch beibringen eine VM nach dem Export nicht zu starten (Also aus zu lassen)?

    Ist es möglich VMs zeitverzögert zu starten?

  56. Hallo Brokk,

    ist keine schlechte Idee. Überlege ob ich das einbaue.

    Carsten

  57. Hallo Christoph,

    nein Mail ist zu kompliziert. Mann müste z.B. ein weiteres PowerShell Module finden, dann den Mailserver konfigurieren, dem Script Absender und Empfänger mitgeben.

    Carsten

  58. Stefan sagt:

    Hallo,

    erstmal vielen Dank für das sehr gute Script, genau was ich gesucht habe.

    Beim Ausführen in der Powershell klappt alles ohne Probleme:

    Hier das Log:

    Freitag, 17. Juni 2011 13:56:46
    Export der VM PC-14 gestartet
    VM PC-14 ist im Status Running
    Lösche Verzeichnis D:\VMExport\PC-14
    Exportiere PC-14 in Verzeichnis D:\VMExport\PC-14
    Starte PC-14
    OK
    Freitag, 17. Juni 2011 14:02:47
    Export der VM abgeschlossen

    Leider habe ich noch ein kleines Problem wenn ich folgende Befehlszeile “powershell.exe -file C:\HyperV-Backup\hyperV-Backup.ps1 -VM PC-14 -ExportPath D:\VMExport” aus einer CMD starte (mit Ausführen als Administrator). Hier bleibt der Vorgang bei der Rückmeldung Status der VM stopped stehen und im Log wird folgendes nur angezeigt:

    Freitag, 17. Juni 2011 13:42:22
    Export der VM PC-14 gestartet
    VM PC-14 ist im Status Running

    Hat jemand eine Lösung für dieses Problem? Bei ersten Tests vor ca. 1,5 Monaten hat das gleiche Script noch funktioniert.

    Ich möchte es aus dem Grund aus einer CMD starten, um vorher das Sicherungslaufwerk per net use zu verbinden und das Log im Anschluß per eMail mit blat zu verschicken.

    Danke schon mal für Eure Bemühungen.

    Gruß

  59. Stefan sagt:

    UPDATE:

    Ich habe am Wochenende den Hostserver einmal durchgestartet und dann ging es wieder mit der CMD. Ich werde weiterhin Beobachten ob der Fehler nochmal auftritt und mich gegebenfalls wieder melden.

    Gruß

  60. Marco sagt:

    Hallo ich habe das gleiche Problem wie oben schon aufgegriffen.

    Habe alles wie in der Anleitung beschrieben und funktioniert Problemlos im aufgerufenen PS-Fenster nach der Installation.

    Jedoch schließe ich das Denster und rufe es erneut auf (auch mit als Adminstrator) funktioniert es nicht mehr.

    Was muss ich tun damit die Libary immer geladen ist oder wo muss ich was ablegen, damit das script die Libary laden kann?

    Danke euch

  61. Jazz sagt:

    Hallo gibt es eine Möglichkeit vor dem Start des Backups per Powershell einer VM zu sagen, dass sie eine SCSI Festplatte disconnecten soll und anschließend wieder connecten?

  62. Hallo Jazz,

    das Script bietet die Möglichkeit nicht. Ich habe allerdings in der Auflistung der PowerShell-CmdLets der “PowerShell Management Library for Hyper-V”, die du ja mit dem Script installierts, die CmdLets “Remove-VMdrive” und “Add-VMDRIVE” gesehen. Mit diesen kannst du dir vermutlich ein Script bauen das deinen Anforderungen entspricht.

    Carsten

  63. Jazz sagt:

    Hi Carsten,
    herzlichen Dank, das werde ich versuchen und berichten.

  64. Hannes W. sagt:

    Hallo an das Rachfahl-Team und alle anderen Unterstützer des Projekts,

    ich habe nach der Anleitung das aktuelle Script “HyperV-Backup-V1.0.zip” und die aktuelle Library “PsHyperV.zip” entsprechend geladen, die Dateien via “streams -d” erfolgreich bearbeitet und “installiert”.

    Soweit alles nach Plan.
    In der sich am Ende der Installation öffnenden PS-Shell funktionieren auch alle Argumente.

    ##########################################################################
    PS C:\tools\PsHyperV> c:\tools\hyperV-Backup.ps1 -VM “export_test” -ExportPath “C:\export_virtue
    lle_maschinen” -verbose

    Donnerstag, 1. September 2011 11:52:54
    Export der VM export_test gestartet
    VM export_test ist im Status Running
    Lösche Verzeichnis C:\export_virtuelle_maschinen\export_test
    Exportiere export_test in Verzeichnis C:\export_virtuelle_maschinen\export_test
    verzögere Start um 0 Sekunden
    Starte export_test
    OK
    Donnerstag, 1. September 2011 11:54:17
    Export der VM abgeschlossen

    PS C:\tools\PsHyperV> $psversiontable

    Name Value
    —- —–
    CLRVersion 2.0.50727.5446
    BuildVersion 6.1.7601.17514
    PSVersion 2.0
    WSManStackVersion 2.0
    PSCompatibleVersions {1.0, 2.0}
    SerializationVersion 1.1.0.1
    PSRemotingProtocolVersion 2.1

    PS C:\tools\PsHyperV>
    ##########################################################################

    Wenn ich eine PowerShell als Administrator öffne und das Script mit den entsprechenden Kommandos starten will, bekomme ich nur folgenden Fehler:

    ##########################################################################
    Windows PowerShell
    Copyright (C) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

    PS C:\Users\Administrator> c:\tools\hyperV-Backup.ps1 -VM “export_test” -ExportPath “C:\export_virtuelle_maschinen” -ver
    bose
    Import-Module : Das angegebene Modul “HyperV” wurde nicht geladen, da in keinem Modulverzeichnis eine gültige Moduldate
    i gefunden wurde.
    Bei C:\tools\hyperV-Backup.ps1:174 Zeichen:17
    + Import-Module <<<< HyperV
    + CategoryInfo : ResourceUnavailable: (HyperV:String) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

    Donnerstag, 1. September 2011 12:00:59
    Export der VM export_test gestartet
    Die Benennung "Get-VM" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Pro
    gramms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wieder
    holen Sie den Vorgang.
    Bei C:\tools\hyperV-Backup.ps1:196 Zeichen:15
    + $myVm = Get-VM <<< $psversiontable

    Name Value
    —- —–
    CLRVersion 2.0.50727.5446
    BuildVersion 6.1.7601.17514
    PSVersion 2.0
    WSManStackVersion 2.0
    PSCompatibleVersions {1.0, 2.0}
    SerializationVersion 1.1.0.1
    PSRemotingProtocolVersion 2.1

    PS C:\Users\Administrator>
    ##########################################################################

    Ich öffne die Shell auch via Rechtsklick “Als Administrator ausführen”.

    Wo liegt mein Denkfehler????

    Danke im Voraus für die Hilfe!

    PS:
    Es Handelt sich um ein Windows 2008 R2 Standard. Der Server ist auf dem aktuellsten Patchstand.

  65. Hallo Hannes,

    hast du das betroffenen System schon mal neugestartet?

    Gruß Carsten

  66. Djimmy sagt:

    Hi @ all,

    habe mich auch mal an das Script ran gewagt. Wenn ich das Script manuell, mit den ganzen Parametern, in die Powershell eingebe, funktioniert alles einwandfrei. Sobald aber die Windows Aufgabenplanung mit den Aufgaben (Programm/Script: Powershell; Argumente: Backup-Script+Parameter) versehen wird funktioniert nichts mehr. Das System will einfach kein Backup von der in den Parametern angegebenen VM machen. Ich bin genau nach der obrigen Anleitung vorgegangen und nichts funzt.

    Was muss ich bei der Aufgabenplanung genau eintragen (Programm/Script und Argumente)?
    Wie sieht es bei euch aus? Klappte das alles ohne Probleme?
    Was kann ich (anders) machen?
    Gibt es noch eine Alternative um das Script automatisch zu starten?

    Gruß,
    Djimmy

  67. Jan Kappen sagt:

    Hallo Djimmy,
    ich habe das bisher mehrfach ohne Probleme eingerichtet mit der Aufgabenplanung unter Server 2008 und Server 2008 R2. Hast du die erweiterten Rechte der Aufgabe eingestellt? Sind in den Pfaden Leerzeichen drin? Wenn ja, alles in “…” schreiben…
    Falls es dann immer noch nicht geht meld dich bei uns im Forum an, dort kannst du auch Screenshots erstellen und anhängen, wenn man was sieht ist es manchmal leichter das Problem zu finden ;)
    Gruß, Jan

  68. Volker Frank sagt:

    Hi

    Tolles Script, geht gut! Wir haben es im Aufgabenplaner sogar mit einem leinen Logging verbunden.

    Schön wäre noch, wenn ein Hyper V Host nicht gestartet werden kann eine Anzahl von Schleifen zu durchlaufen die man übergibt um mehrfach zu versuchen den Hyper V Host zu starten.

    Außerdem wäre es schön wenn das Logging mer Timestamps zwischendurch setzt und vielleicht noch ausführlicher wäre.

    Ansonsten tolle Arbeit! Danke für das Teilen!

    Grüße

    Volker

  69. Klaus sagt:

    Hallo.
    Erstmal danke für die viele Arbeit. Ein paar Anmerkungen:

    - Im Aufgabenplaner darf der VM-Name nicht in Anführungsstrichen angegeben werden. Ich wollte das machen, weil ich Leerzeichen im VM-Namen hatte. Im Powershell-Fenster lief das auch, im Aufgabenplaner nicht.

    - Im Screenshot des Aufgabenplaners fehlt das -VM.

    - Wünschenswert wären noch ein Logfile, welches per Mail versendet wird. Zum Mailversenden empfehle ich Mailsend.exe (einfach mal googeln, das habe ich bei mir im Einsatz (Freeware)

    - Das einige das Problem haben, das die Bibliothek/Modul HyperV nur nach der Installation vorhanden ist und in einem neuen Powershell-Fenster nicht mehr, habe ich bei mir gelöst, das ich ein Profile für Powershell erstellt habe, wo ich den import-Modul Befehl eingetragen habe. Das Profil liegt unter $Profil und muss (inklusive dem Pfad) erstellt werden.

    Gruß
    Klaus

  70. Martin Herschel sagt:

    Hallo,

    ein wirklich schönes Script was auch einwandfrei funktioniert. Ich hätte allerdings noch eine Frage wie es mit dem Einsatz bei Hyper-V Clustern aussieht. Kann man dort auch die Maschinen mit diesem Script sichern? Nehme ich dann als “Server” das Clusterobjekt?

    Gruß
    Martin

  71. Jan Kappen sagt:

    Hallo Martin,
    das Script wird ja lokal ausgeführt, d.h. beim Einsatz des Scriptes müsstest du wissen, wo sich die VM gerade befindet und dann das Script genau auf dem Knoten ausführen. Alternativ könntest du auf allen Knoten alle Sicherungs-Scripts starten lassen, da wo die VM vorhanden ist wird eine Sicherung gemacht, wenn sie nicht lokal vorhanden ist läuft das Script in’s Leere. Ist aber keine wirklich saubere Sache…
    Gruß, Jan

  72. Kris sagt:

    Hallo,
    danke für das super Skript!
    Was mach ich denn, wenn eine virtuelle Maschine eine physische Platte zugeornet hat ? Bleibt mir ja nur eine separate Eigensicherung oder ?

    Danke Gruß Kris

  73. Jan Kappen sagt:

    Hallo Kris,
    bei einer pass-through-disk funktioniert ein Export nicht, hier muss anderweitig eine Sicherung gemacht werden oder das ganze in eine VHD gelegt werden.
    Gruß, Jan

  74. Volker Frank sagt:

    Hi

    bei unshaben wir das Phänomen so wie auch schon ein paar einträge vorher beschrieben, daß die VM nicht gefunden wurde, obwohl ich Sie an der Powershell finde. Das Weglassen von Anführungszeichen hat bei uns nicht geholfen.

    Das manuelle ausführen des Scripts scheitert an get-wmiobject aus der vm.ps1

    Was kann das noch für Gründe haben.

    Grüße

    Volker

    PS: wir haben das Script auf 5 anderen Hyperv Servern problemfrei im einsatz.

  75. RS sagt:

    Hallo,

    erstmal danke für dieses tolle Skript. Ich möchte es nutzen um VMs von einem Hyper-V auf einen anderen zu schieben und von dort zu starten.
    Der Export (direkt auf einen UNC-Pfad) hat beim ersten Mal funktioniert und ich konnte die VMs auf dem zweiten Hyper-V starten.
    Wenn ich nun versuche, noch einmal zu exportieren, bekomme ich die Fehlermeldung dass das Exportverzeichnis bereits besteht.
    Gibt es hier die Möglichkeit, dieses zu überschreiben?

    Vielen Dank schon einmal im Voraus,
    Rüdiger

  76. RS sagt:

    Hat sich erledigt. Sofern die VM schon einmal importiert wurde, kann sie nicht mehr überschrieben werden.

  77. Thomas sagt:

    Das Script funktioniert sehr gut. Ich setze das für mehrere HyperV Rechner über die Aufgabenplanung ein. Schön wäre es wenn jetzt noch ein Logfile abgelegt wird damit man die Sicherung leichter überprüfen kann. Jetzt muß man sich immer er den Verlauf in der Aufgabenplanung ansehen. Oder gibt es das schon und habe es nur nicht gefunden?

    Vielen Dank!
    Thomas

  78. Hallo Thomas,

    schön das das PowerShell Script bei euch so gute Dienste leistet. Ich habe momentan keine Erweiterungen an dem Script geplant. Vieleicht werden ich es an das neue PowerShell Module in Windows 8 anpassen wenn das Betriebsystem verfügbar ist. Bei der Logfunktionalitäten musst du dich auf dem Aufgabenplaner verlassen.

    Gruß Carsten

  79. Kim sagt:

    Hallo zusammen,
    bekommme folgenden Fehler beim ausführen als Admin.

    Import-Module : Fehler beim Laden der Formatdatendatei:
    Microsoft.PowerShell, , C:\Program Files\Modules\HyperV\hyperv.Format.ps1xml: Aufgrund der folgen
    me wurde die Datei übersprungen: Die Datei “C:\Program Files\Modules\HyperV\hyperv.Format.ps1xml”
    rden. Die Datei “C:\Program Files\Modules\HyperV\hyperv.Format.ps1xml” ist nicht digital signiert
    dem System nicht ausgeführt. Weitere Informationen erhalten Sie mit “get-help about_signing”…
    Bei C:\Tools\hyperV-Backup.ps1:174 Zeichen:17
    + Import-Module <<<< HyperV
    + CategoryInfo : InvalidOperation: (:) [Import-Module], RuntimeException
    + FullyQualifiedErrorId : FormatXmlUpateException,Microsoft.PowerShell.Commands.ImportModuleC

    Die Benennung "Get-VM" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder
    gramms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern
    holen Sie den Vorgang.
    Bei C:\Tools\hyperV-Backup.ps1:196 Zeichen:15
    + $myVm = Get-VM <<<< -Server $Server -Name $VM
    + CategoryInfo : ObjectNotFound: (Get-VM:String) [], CommandNotFoundException

  80. Kim sagt:

    Erledigt, hatte vergessen mit Stream die Dateien zu bearbeiten.

  81. Paul sagt:

    Hallo,

    erstmal danke für dieses tolle Script.

    Hab dazu noch eine Frage:
    Gibt es eine Möglichkeit die Ausgaben von -verbose in eine Logdatei zu schreiben?
    Steht das vielleicht irgendwo und ich habe es nur übersehen?

    Grüße,
    Paul

  82. bic_admin sagt:

    Hallo!

    Das Skript läuft auf unserem Windows Server 2008 R2 ohne Probleme.
    Unter Windows Server 2012 jedoch nicht.

    Auszug der Fehlermeldung:

    PS C:\Windows\system32> C:\_ADMIN\hyperV-Backup-V1.0\hyperV-Backup.ps1 -VM NAGIOS -ExportPath F:\VMExport
    “C:\_ADMIN\hyperV-Backup-V1.0\hyperV-Backup.ps1″ ausführen?
    [N] Nicht ausführen [M] Einmal ausführen [H] Anhalten [?] Hilfe (Standard ist “N”): M
    OK
    WARNUNG: NAGIOS wurde nicht heruntergefahren und kann deshalb nicht exportiert werden
    Start-VM : Das Argument kann nicht an den Parameter “VM” gebunden werden, da es NULL ist.
    In C:\_ADMIN\hyperV-Backup-V1.0\hyperV-Backup.ps1:271 Zeichen:12
    + Start-VM $MyVm -Server $Server -Force -Wait
    + ~~~~~
    + CategoryInfo : InvalidData: (:) [Start-VM], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Start-VM

    Woran könnte das liegen?

  83. Jan Kappen sagt:

    Das liegt daran, das mit Server 2012 eine eigene, komplett nutzbare PowerShell-Unterstützung für Hyper-V erschienen ist und man nicht auf Module zurückgreifen muss, die von dritten bereitgestellt werden. Die cmdlets werden anders sein, das Script müsste auf die aktuelle Version angepasst werden.
    Gruß, Jan

  84. Patrick sagt:

    Hallo Leute.

    Erst einmal SUPER SKRIPT, das wird uns sehr hilfreich sein.
    Ich hab mal ein wenig rumprobiert und hänge derzeit an dem Punkt “Sicherung auf eine Netzwerkfreigabe” fest. Ich bekomme die Nachricht:

    WARNUNG:
    Falscher Parameter: Auf den Remotepath \\usw. kann nicht zugegriffen werden.

    Muss man sich über den Skript nochmal extra authentifizieren? Konsole wird als Admin ausgeführt.

    Die Freigabe und der Zugriff auf dem Ordner funktioniert eigentlich. In Sachen PowerShell ich ein totaler Anfänger. Ich hoffe Ihr könnt mir helfen.

    LG

    Patrick

  85. Oliver Rumpf sagt:

    Hi Patrick,

    prüfe noch mal ob du auch die “-” gesetzt hast.

    Bsp.

    powershell HyperV-Backup.ps1 -VM VMSERVER01 -ExportPath \\BACKUPSERVER\VMEXPORT -StartDelay 60 -verbose

    PS: und natürlich die Berechtigungen der Freigabe

    Besten Gruß
    Oliver

  86. Volker sagt:

    Hallo, ich kann nicht anders, als danke zu sagen!
    Das Skript läuft unter 2008R2 Enterprise tadellos!
    Bisker hatte ich von “Hand” gesichert, aber natürlich nicht jeden Tag.
    Man dankt.

    Grüße
    Volker

  87. Hannes W. sagt:

    Hallo gesagt,

    hat sich schon wer an die “Portierung” des Export-Scripts für PowerShell 3.0 gewagt?

    Vorteil wäre das die bereits integrieren Kommandos genutzt werden können.

    Die in Windows 2012 integrierte Sicherung halte ich nicht für eine Alternative zum „sauberen“ Export. Der Grund aus meiner Sicht liegt ganz einfach darin das eine sauber exportierte VM in einen anderen Hyper-V-Host importiert werden kann und ab geht die Luzie. Die Sicherung durch die Server-Sicherung kann dank VSS auch im laufenden Betrieb erfolgen und bietet mir eine erstaunlich saubere Wiederherstellung als VM an. Nur bleibt nach der Sicherung die bisher so lieb gewonnene Dateistruktur der exportierten VM´s auf der Strecke. Auch komme ich nicht so einfach an Dateien in der VHD(X) der VM…

    Eine Kombination aus beiden Möglichkeiten, täglich/mehrfach täglich die Server-Sicherung laufen lassen und einmal in der Woche zum Beispiel einen sauberen Export wäre mein Wunsch.

    Ich habe mir mal unter http://goo.gl/oZm3X die verfügbaren Cmdlets angeschaut und dabei ist folgendes raus gekommen:

    “Stop-VM -Name vTerm01 -verbose
    Export-VM -Name vTerm01 -Path C:\export_virtuelle_maschinen -verbose
    Start-VM -Name vTerm01 -Verbose”

    Damit klappt der Export wunderbar. Die Probleme fangen aber schon damit an das der zweite Export abbricht mit dem Hinweis: “Export-VM : Fehler beim Exportieren des virtuellen Computers “vTerm01″, da bereits ein Exportverzeichnis mit dem Namen
    “C:\export_virtuelle_maschinen\vTerm01\Virtual Machines” vorhanden ist”.
    Natürlich könnte man jetzt eine Abfrage davor bauen ob es dieses Verzeichnis gibt und wenn ja dann….

    Mit der Option Variablen zu nutzen landen wir dann im Endeffekt aber wieder bei dem Export-Skript welches uns durch die Rachfahl IT-Solutions zur Verfügung gestellt wird. Auch die Option den Export auf ein weiteres Ziel zu verschieben finde ich sehr nützlich.

    Ich habe direkt eine Ergänzungsidee:
    Das Script könnte eine Datei (z.B. CSV oder einfach nur TEXT) auslesen. In der Datei stehe alle Namen der zu sichernden VM´s. 4 Namen bedeutet 4 Durchläufe. 1 Name nur 1 Durchlauf. Damit könnte das Script in einem Rutsch den Export nacheinander durchführen ohne für jede VM einen eignen Task zu benötigen. Außerdem wäre dadurch das Problem der Abhängigkeiten der Exportreihenfolge aus dem Weg geräumt (das ein Task ggf. schon anfängt obwohl ein anderer Export-Task noch läuft oder ein Task bereits fertig ist und der folgende Task noch auf den festgelegten Startzeitpunkt wartet).

    Was wollte ich doch gleich:
    Hat es bisher jemand geschafft das bestehende Script mit den Cmdlets von PowerShell 3.0 zu nutzen?
    Wie schaut die Machbarkeit aus bezüglich einer Datei mit den Namen der zu exportierenden VM´s um diese in einem Abwasch durch zu gehen?

    Ich hoffe der viele Text stiftet nicht zu viel Verwirrung.

    Gruß Hannes

  88. Martin sagt:

    Hallo,

    gibt es schon etwas für Hyper-V 3.0 unter Windows Server 2012?

    Gruß Martin

  89. Günter Vils sagt:

    Hallo Zusammen!

    Hat schon jemend ein Export-Script für PowerShell 3.0 das funktioniert am laufen?

    Vile Grüße
    Günter

  90. departure sagt:

    Ich hätte noch einen Tipp für alle, denen es zu umständlich ist oder erscheint, den Export zunächst auf eine lokale Platte laufen zu lassen und danach noch die Kopie auf ein Netzlaufwerk übertragen zu lassen:

    Wenn das Ziel im Netzwerk mindestens ein W2K8R2-Server ist, kann dort ein iSCSI-Target installiert werden, welches danach am HYPER-V-Server per iSCSI-Initiator wie ein lokales Laufwerk eingebunden wird. Voilá, Ziel im Netzwerk = lokales Laufwerk.

    Wird einer der Exporte jemals benötigt, ist natürlich die iSCSI-Verbindung auf dem HYPER-V zu entfernen und stattdessen, wiederum per iSCSI-Initiator, z.B. am “Ausfall”-HYPER-V einzuhängen. Es sollten jedenfalls keine zwei Server g l e i c h z e i t i g auf das iSCSI-Ziel zugreifen, das kann die Daten zerstören.

    Wer als iSCSI-Ziel keinen W2K8R2-Server verfügbar hat, kann iSCSI-Ziele auch auf den meisten NAS-Systemen zur Verfügung stellen, und wenn weder Server nach NAS verfügbar sind, kann man per kostenloser iSCSI-Target-Software, z. B. von STARWIND, auch iSCSI-Ziele auf einem einfachen Windows-Client (mit entsprechend verfügbarem Plattenplatz) erstellen.

    Grüße

  91. Martin sagt:

    Hallo zusammen,

    folgende Fragen habe ich zu diesem scheinbar sehr guten Script:

    1.) Was passiert wenn ich eine virtuelle Maschine sichere die im Moment der Sicherung offline ist? Wird diese dann im Anschluss auch wieder hochgefahren?

    2.) Was passiert wenn physische Platten durchgereicht werden? Werden diese dann ausgelassen? Wie verhält sich das Script?

    Vielen Dank
    Gruß
    Martin

  92. Markus sagt:

    Hallo,

    vielen Dank für das perfekte Script.
    Wurde schonmal darüber nachgedacht nach Ablauf auch den Status in das Event-Log zu protokollieren so das dieser mit Monitoring-Tools ausgelesen werden kann?

    Vielen Dank!

  93. oel-auge sagt:

    Moin,

    ich bin ein Neuling auf dem Gebiet von Hyper-V Exporten und habe bzgl. der Anleitung noch ein paar Fragen:

    - Das Powershell Script führe ich auf dem Server aus, von dem ich die Hyper-V Maschine Verwalte, richtig?

    - Muss ich auf dem HyperV Host etwas installieren?

    Vielen Dank für die Hilfe

Antworten