Wer seinen Hyper-V von Microsoft Windows Server 2012 R2 auf Microsoft Windows Server 2016 gebracht hat, per Upgrade, und noch einen Altbestand von virtuellen Maschinen darauf laufen hat, sollte die VMs auf die aktuelle Version bringen, um alle Features unterstützen zu können.
Hier ist ein Ansatz, wie man das per PowerShell angehen kann. Zunächst verschafft man sich einen Überblick ,welche VMs es gibt und welche Version sie haben – und vor allem in welchem Status sie sich befinden.
get-vm | ft name,state,version -autosize
Name State Version
---- ----- -------
Adam Running 5.0
ADC Running 5.0
Blog Running 8.0
Code01 Running 5.0
DHCP Running 8.0
FTP Running 5.0
Hosting Running 5.0
OTRS Running 5.0
Radio Running 5.0
RDP Running 5.0
SDC Running 5.0
SSH Running 5.0
Teamspeak Running 5.0
Tor Running 5.0
Unreal Running 5.0
Web Running 5.0
WebRDP Running 5.0
WebSSH Running 5.0
Es laufen also alle virtuellen Maschinen. Falls welche es nicht tun, muss man sie nicht abschalten und sollte sie nach dem Update auch nicht hochfahren. Deshalb berücksichtigen wir im unteren Code weiterhin etwaige nicht gestartete VMs.
get-vm | where-object { $_.version -ne "8.0" } | foreach-object { $r=($_.state -eq "Running"); if($r) { stop-vm -VMName $_.vmname -Confirm:$false }; Update-VMVersion $_.vmname -Confirm:$false; if($r) { Start-VM -VMName $_.vmname } }
Der Hyper-V wird nun nach und nach alle älteren VMs herunterfahren, sofern sie laufen, auf den neuesten Stand bringen und anschließend, sofern sie zuvor gestartet gewesen sind, wieder hochfahren.
Anschließend prüft man erneut die Versionen, um sicher zu gehen:
get-vm | ft name,state,version -autosize
Name State Version
---- ----- -------
Adam Running 8.0
ADC Running 8.0
Blog Running 8.0
Code01 Running 8.0
DHCP Running 8.0
FTP Running 8.0
Hosting Running 8.0
OTRS Running 8.0
Radio Running 8.0
RDP Running 8.0
SDC Running 8.0
SSH Running 8.0
Teamspeak Running 8.0
Tor Running 8.0
Unreal Running 8.0
Web Running 8.0
WebRDP Running 8.0
WebSSH Running 8.0