Worum geht es in diesem Post?

Ich zeige dir eine Kostenlose Alternative zu Backup Programmen wie du selber ein «Backup-Programm» für Microsoft Hyper-V erstellen kannst ohne viel Geld für eine Backup-Lösung zu bezahlen.
Diese Variante eignet sich für den Privat-Bereich. Im Professionellen Bereich würde ich je nach Wichtigkeit der Systeme davon abraten.

Einführung

Du hast z.B. zu Hause eine Testumgebung und möchtest keine grossen Beträge für eine Backup-Software ausgeben, möchtest jedoch die Möglichkeit haben, immer wieder automatisch ein Backup deines Systemes zu machen, falls etwas schief gelaufen ist.
Hierbei handelt es sich nicht um ein Klassisches Backup sondern um ein Skript, welches dir automatisiert deine VM Exportiert. Somit kannst du diese wieder Importieren und entsprechend wieder nutzen.

Was du dazu benötigtst

Du benötigst lediglich:

  • Microsoft Hyper-V (mit einer oder mehreren VM’s)
  • PowerShell ISE (Oder einen Editor wie Notepad / Notepad ++)
  • Das Windows Tool «Aufgabenplanung»
  • Den entsprechenden Speicherplatz (Vorzugsweise auf einer Externen Festplatte, einem NAS oder ähnlichem.

PowerShell ISE (oder dein Editor)

Sichern einzelner VM’s

Zuerst schauen wir die Variante an, um einzelne oder «nur ausgewählte» VM’s zu sichern. Dies bietet dir den Vorteil, dass VM’s welche du nicht sichern möchtest ausgelassen werden können und nur die VM exportiert wird, welche du wirklich Sichern möchtest.

Das Skript

Microsoft gibt das Skript wie folgt an:

Export-VM -Name \<vm name\> -Path \<path\>

Microsoft – https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/deploy/export-and-import-virtual-machines

Dies ist meiner Meinung nach ziemlich kompliziert beschrieben, da gerade für Personen ohne Wissen dies nicht so einfach anzupassen ist. Es fehlt lediglich ein Beispiel mit Bildern.
Unsere Vorschau VM sieht wie folgt aus:

Hierbei stellt sich bereits die «Herausforderung» wie gebe ich Abstände im Skript an? – Dies wird von Microsoft vorausgesetzt, dass man dies weiss.

Oder als Text:


Export-VM -Name «Blog VM» -Path «D:\Backup\»

Nun geschieht nichts anderes, als dass die VM «Blog VM» nach «D:\Backup\» Exportiert wird. – Aktuell nur durch Manuelle Ausführung. Zudem ist unschön, dass nach dem ersten Export eine Fehlermeldung kommt, dass die Dateien bereits vorhanden sind und die Aktion wird nicht durchgeführt.
Um dies auch noch auszumerzen gibt es 2 Zusätze, welche hinzugefügt werden können, je nach dem wie oft der Export stattfinden soll.

Oder als Text:

$date = Get-Date -Format dd-MM-yy
cd «D:\Backup\»
New-Item -ItemType directory -Path «.\$date»
Export-VM -Name «Blog VM» -Path «D:\Backup\$date»

Was haben wir jetzt gemacht?
1 Zeile, wir definieren die Variable $date mit dem aktuellen Datum und Formatieren es mit dd-MM-yy (Tag, Monat, Jahr mit je 2 Zahlen und einem Bindestrich als Trennung). Dies kann Beliebig angepasst werden.
2 Zeile, wir wechseln ins Backup Verzeichnis, da wir ja nicht wollen, dass unter dem Standard Verzeichnis (Entweder Benutzerordner oder im Windows Ordner) das Backup erstellt wird.
3 Zeile, Wir erstellen im aktuellen Pfad einen Ordner, welcher nach unserer Variable benannt ist.
4 Zeile, Wir exportieren unsere Blog VM in den neu angelegten Pfad.

Dies sieht bei uns dann so aus mit dem Verzeichnis: «D:\Backup\02-05-20» in den Ordner «02-05-20» wird nun ein Ordner angelegt mit dem Namen der zu exportierenden VM.

Willst du nun mehrere Exporte am Tag machen, kannst du auch das Skript wie folgt machen:

Oder als Text:

$date = Get-Date -Format «dd-MM-yy HH-mm»
cd «D:\Backup\»
New-Item -ItemType directory -Path «.\$date»
Export-VM -Name «Blog VM» -Path «D:\Backup\$date»

Jetzt setzen wir beim Ordner noch die Stunden und Minuten hinzu.

Möchtest du nun 2, 3 oder mehr VM’s exportieren (aber eine nicht), dann kannst du einfach die 4 Zeile als 5 Zeile verwenden und den VM Namen entsprechend anpassen.

Sichern aller VM’s

Das ganze geht auch einfacher, wenn du alle VM’s auf einmal sichern bzw. Exportieren möchtest.

Das Skript

Auch hier macht Microsoft es sich sehr einfach und gibt es wie folgt an:

Get-VM | Export-VM -Path D:\

Microsoft – https://docs.microsoft.com/de-ch/powershell/module/hyper-v/export-vm?view=win10-ps

Ich empfehle wie folgt vorzugehen:

Oder als Text:

Get-VM | Export-VM -Path «D:\Backup\»

Nun stehen wir jedoch wieder vor dem selben Problem wie, wenn nur eine VM Exportiert wird. Sprich, nach der ersten Ausführung funktioniert es nicht mehr.

Somit müssen wir auch hier das Skript entsprechend erweitern:

Oder als Text:

$date = Get-Date -Format dd-MM-yy
cd «D:\Backup\»
New-Item -ItemType directory -Path «.\$date»
Get-VM | Export-VM -Path «D:\Backup\$date»

Wie du siehst, wird nur die 4. Zeile geändert. Das selbe gilt mit der Zeit Erweiterung. Sprich es gibt einfach den Zusatz in der 1. Zeile.

Das Skript sollte in beiden Fällen gespeichert werden, an einem Ort welcher immer ausführbar ist. Ich bevorzuge hierfür jeweils einen selbst erstellten Ordner «C:\Skripts». Ich nenne das Skript «VM Export.ps1».

Automatisieren des Exportes

Nun wollen wir natürlich nicht, dass wir täglich dieses Skript ausführen müssen, sondern der PC / Server dies automatisch und selbständig erledigt. Voraussetzung ist natürlich, das der PC / Server im eingeschalteten Zustand ist. Ob die VM eingeschalten ist oder nicht, spielt hierbei keine Rolle.

Wir öffnen die «Aufgabenplanung» auf dem Server / PC auf welchem dein Hyper-V installiert ist.

Einen Neuen Ordner eignet sich immer, damit kein durcheinander entsteht mit den entsprechenden Vorgegebenen Aufgaben. Ich nenne ihn «Eigene Skripts».

Rechts wähle ich nun «Aufgabe erstellen…», bitte nicht «Einfache Aufgabe erstellen..» dies würde nicht funktionieren.

Das ganze sieht bei mir dann in etwa so aus:

Natürlich kannst du einen eigenen Namen und eine eigene Beschreibung wählen.
Achte auf die «Sicherheitsoptionen», dass du diese analog zu meinen konfigurierst.

Wir richten nun natürlich einen Trigger ein, Sprich eine Auslöseaktion.

Diese kannst du natürlich nach deinen Bedürfnissen Konfigurieren. In meinem Beispiel wird nun täglich um 23:00:00 der Export durchgeführt. Achte darauf, dass in jedem falle «Aktiviert» steht.

Wir erstellen jetzt noch eine neue «Aktion». Also was ausgeführt werden soll.

Hierbei musst du natürlich deinen Pfad auswählen und deine entsprechende Skriptdatei.

Den Reiter Bedienungen lasse ich aus, da die Standard Konfiguration für diesen Export im Normalfall in Ordnung ist.

Nun sollte meiner Meinung nach noch unter «Einstellungen» folgende Anpassung geschehen:

Dies muss natürlich auf den Individuellen Bedürfnissen Beruhen. Ich finde z.B. die Manuelle Ausführung gut, wenn man weiss, etwas wird getestet. – Es kann natürlich auch die Skript-Datei Manuel ausgeführt werden. Somit wird der selbe Effekt erreicht.
«Aufgabe so schnell wie möglich nach einem verpassten Start ausführen» dies finde ich auch eine Wichtige Option, welche z.B. zum Tragen kommt, sollte der Server / PC gerade neugestartet werden und den Start somit «verpassen». Natürlich können auch andere Umstände daran schuld sein.
«Falls Aufgabe scheitert, neu starten alle:» diese Option finde ich Persönlich auch wichtig und gut. Sicherlich werden einige von euch versuchen die Sicherung auf ein NAS zu schreiben oder einen Speicher, welcher nicht zwingend immer direkt verfügbar ist. Somit versucht Windows 3x im Abstand von 5 Minuten dies zu wiederholen. Gerade wer mit Onlinespeicher arbeitet, kann somit Fehler von z.B. kurzzeitigem Verbindungsunterbrechung beim Starten umgehen.
«Aufgabe beenden, falls Ausführung länger als:» Hier sollte man vorgängig schauen, wie lange ein Export dauert. Natürlich sollte auch darauf geachtet werden wie oft die Aufgabe ausgeführt wird. Bei mir geht der Export aller VM’s ca. 30 Minuten. Sollte jetzt ein Export wirklich mal festhängen, wird nach 12 Stunden automatisch abgebrochen. Natürlich bei der nächsten Ausführung versucht Windows wieder den kompletten Export.

Wenn ihr das ganze mit «Ok» Bestätigt, müsst ihr das Kennwort des Benutzers hinterlegen, welcher die Aufgabe Ausführt (Administrator Konto eignet sich hierfür am besten – Evtl. legt ihr euch auch einen Extra Benutzer für diese Aufgabe an oder habt bereits einen «Backup» Benutzer.
Ist dies erledigt, schaut nach der ersten Ausführung nach, ob es wirklich funktioniert hat. Gerade beim einrichten der Ersten eigenen Aufgabe kann es zu «Komplikationen» kommen.

Fehler (0x41303)

Diesen Fehler werden die meisten direkt zu Gesicht bekommen.
Warum?
Dein Konto darf sich nicht als «Dienst» Anmelden.
Dies kannst du wie folgt «Beheben»:
Du Öffnest «Lokale Sicherheitsrichtlinie» auf dem Entsprechenden Gerät:

Nun Navigierst du dich nach «Sicherheitseinstellungen –> Lokale Richtlinien –> Zuweisen von Benutzerrechten» und suchst in der Liste nach «Anmelden als Dienst».

Du machst einen Doppelklick, «Benutzer oder Gruppe hinzufügen…» und gibst deinen Benutzernamen ein, welcher die Aufgabe auszuführen hat (Achtung, es muss der Selbe sein wie in der Aufgabenplanung!).

Jetzt solltest du das Gerät neustarten und die Richtlinie wird entsprechend geladen. Überprüfe trotzdem Regelmässig ob die Aufgabe noch ausgeführt wird.

Tags

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.