[Hyper-V] mehrere virtuelle Maschinen auf unterschiedlichen Hyper-V-Hosts starten

Gepostet am: Mar 16, 2014 1:2:10 AM

Manchmal brauche ich zur Entwicklung mehrere virtuelle Maschinen, die erst zusammen ein brauchbares Entwicklungssystem ergeben, beispielsweise eine gesamte kleine Domäne. In diesem Fall müssen bestimmte Rechner in einer vordefinierten Reihenfolge gestartet werden. Da ich keinen großen Hyper-V-Host habe, sondern meine virtuellen Maschinen auf mehrere Hyper-V-Hosts verteilt habe und ich nicht manuell alle virtuellen Maschinen starten möchte, starte ich diese über ein powershell-Script, dass die VMs in einer vordefinierten Reihenfolge ($VMNames) auf den unterschiedlichen Hyper-V Hosts ($VMHostServers) startet.

Start Multiple VMs on multiple Hyper-V-Hosts

$VMHostServers = "HyperV-1","HyperV-2","HyperV-3","HyperV-4"$VMNames = "Dev1-DC","Dev1-SQL2012","Dev1-SP2013","Dev1-Win8","Dev1-Win7"# Alle Server durchlaufenForEach($VMName in $VMNames) { Write-Host "$VMName" -BackgroundColor YellowForEach($VMHostServer in $VMHostServers){     Write-Host "Überprüfe, ob VM $VMName auf Server $VMHostServer enthalten ist"     # Überprüfen, ob der Server verfügbar ist    if(Test-Connection -ComputerName $VMHostServer -Count 1 -Quiet -EA 0) {         Write-Host "Server $VMHostServer verfügbar" -ForegroundColor Green         # Überprüfen, ob die VM dort verfügbar ist            if(Get-VM -ComputerName $VMHostServer | Where-Object {$_.Name -eq $VMName}) {                 Write-Host "gefunden: $VMName" -ForegroundColor Green                 # Überprüfen, ob die VM bereits läuft                if(Get-VM -ComputerName $VMHostServer | Where-Object {$_.State –eq 'Running' -and $_.Name -eq $VMName}) {                     Write-Host "$VMName läuft bereits"                 } else {                     Write-Host "$VMName wird gestartet"                     # gegebenenfalls starten                    Start-VM $VMName -ComputerName $VMHostServer                 }             } else {                 Write-Host "$VMName auf $VMHostServer nicht gefunden" -ForegroundColor Yellow             }     } else {         Write-Host "Server $VMHostServer NICHT verfügbar" -ForegroundColor Red     } } }

Das Ganze gibt es auch als Programm:

Download: