Hyper-V: Virtuelle Computer in bestimmter Reihenfolge starten und herunterfahren

Im Gegensatz zu VMware’s ESX(i) gibt es bei Microsoft’s Hyper-V ab Werk und ohne Zusätze keine grafische Möglichkeit die Start- oder Herunterfahren-Reihenfolge von virtuellem Computern festzulegen.

Mit Bordmitteln gelingt das Vorhaben dank einfacher Skripte dennoch. Das Ausgangsszenario ist der monatliche Patchday. Alle virtuellen Computer inkl. dem Host gleichzeitig herunterzufahren oder neu zu starten ist keine gute Idee, geht dies mindestens auf die (Gesamt-)Performance und führt häufig zu Schwierigkeiten bei der Netzwerkkategorie (Stichwort: Öffentlich statt Domänennetzwerk).

Das Herunterfahren und den Host-Neustart kann man z.B. so regeln:

@echo off

rem SRV02, SRV03 und WTS03 per Integrationsdienste herunterfahren

powershell Stop-VM -Name 'WTS01' -Force
powershell Stop-VM -Name 'SRV03' -Force
powershell Stop-VM -Name 'SRV02' -Force

rem SRV01 per shutdown-Befehl herunterfahren

net use \\192.168.2.10 "Kennwort" /user:"Domäne\administrator" /persistent:no
shutdown /m \\192.168.2.10 /s /f /t 0
net use \\192.168.2.10 /d

rem Pruefen, ob der virtuelle Computer heruntergefahren wurde

:check
timeout /t 15 /nobreak
powershell Get-VM | find "Running" | find /i "SRV01"
if %Errorlevel%==0 goto check

rem Statusdatei schreiben

echo Start VMs > "C:\Users\Administrator\Dokemente\Hyper-V\VMstart.txt"

rem HV01 neu starten

shutdown -r -f -t 30

In diesem Beispiel werden zunächst die virtuellen Computer mit aktiven und funktionierenden Integrationsdiensten heruntergefahren, dann folgt noch Einer ohne Integrationsdienste und schließlich wird der Host neu gestartet.

Damit nach dem Neustart der Host weiß das er die virtuellen Computer wieder starten soll, wird eine Statusdatei erstellt.

Dieses Skript wird als Aufgabe zu einem festgelegtem Zeitpunkt ausgeführt, beispielsweise über Nacht.

Eine weitere Aufgabe prüft beim Starten des Hosts, ob eine Statusdatei exisitiert und wenn dies der Fall ist, werden die virtuellen Computer in der angegebenen Reihenfolge gestartet:

@echo off

rem Status-Datei pruefen

if not exist "C:\Users\Administrator\Dokumente\Hyper-V\VMstart.txt" exit

rem SRV01 und SRV02 starten

powershell Start-VM -name 'SRV01'
timeout /t 360 /nobreak

powershell Start-VM -name 'SRV02'
timeout /t 360 /nobreak

rem SRV03 und WTS03 starten

powershell Start-VM -name 'SRV03'
timeout /t 360 /nobreak

powershell Start-VM -name 'WTS01'

rem Status-Datei entfernen

del "C:\Users\Administrator\Dokumente\Hyper-V\VMstart.txt" /q

Tipp: Die „Start“-Aufgabe um min. eine Minute verzögern, damit es zu keinen Schwierigkeiten kommt.

Ggf. muss man die Pause-Zeiten zwischen den Startvorgängen anpassen, das kommt ganz darauf an, wie lange im Durchschnitt die virtuellen Computer zum Starten benötigen.

In der Praxis, ganz gleich ob mit oder ohne die Installation von Windows Updates hat sich 360 Sekunden, also fünf Minuten, bewährt. Die einzige Ausnahme stellen dabei virtuelle Computer mit Windows Server 2016 dar, die leider unglaublich lange für den Windows Update bedingten Neustart benötigen.

Schreibe einen Kommentar

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