How To Upgrade The VM Configuration Version In Windows Server 2016 Hyper-V Cluster With PowerShell? #HyperV #WS2016

3 min read


In the previous version of Hyper-V, whenever you upgraded your host to a new release, the moment Hyper-V sees your virtual machines, the VM configuration version will be upgraded automatically behind the scenes.

This has been changed in Windows Server 2016, Hyper-V will NOT automatically upgrade your virtual machines. This gives you the flexibility to move virtual machines back to earlier Hyper-V versions if we deem it necessary. Once you upgrade the VM configuration to the latest version, you cannot move it back to a downgrade level host. This what is called the “Point of no Return.

The upgrade of a virtual machine version in Windows Server 2016 is a manual operation that is separate from upgrading the host.

As a reference, version 5.0 is the configuration version of Windows Server 2012 R2. Version 2.1a was for Windows Server 2008 R2 SP1. The configuration version was always there for internal usage based on the functionality and not based on the release, and it was not displayed to the users. In Windows Server 2016 Hyper-V the version is 8.0.

The process to upgrade a virtual machine configuration version requires to shutdown the VM, and do a manual upgrade. This is a one-way process so you can either do this through PowerShell or through the Hyper-V Manager console.

As you can see in the UI we have got this Upgrade Configuration Version.


Upgrade The VM Configuration in a Hyper-V Cluster

I recently deployed a 4-Nodes Storage Spaces Direct (S2D) cluster and I moved all my virtual machines from Windows Server 2012 R2 to 2016.

I don’t have anymore Windows Server 2012 R2 host in my environment, and I decided to upgrade all the virtual machines configuration in order to get the benefit of the latest and greatest features.

Check out my blog post about What’s new in Windows Server 2016 Hyper-V to get an overview about all the new features!

I moved dozens of VMs to this new shiny S2D cluster.

In order to get all virtual machines in the cluster, you can run the following command:

Get-ClusterGroup –Cluster <Cluster NAME> | ? {$_.GroupType –eq 'VirtualMachine' } | Get-VM


In order to upgrade the VM configuration version for all virtual machines, you can do this with the following commands:

$Cluster = “Cluster Name”

Get-ClusterGroup -Cluster $Cluster | ? {$_.GroupType –eq 'VirtualMachine' } | Get-VM | Stop-VM –Force

Get-ClusterGroup –Cluster $Cluster | ? {$_.GroupType –eq 'VirtualMachine' } | % {Update-VMVersion -Name $_.Name -ComputerName $_.OwnerNode -Confirm:$false }

Get-ClusterGroup -Cluster $Cluster | ? {$_.GroupType –eq 'VirtualMachine' } | Get-VM | Start-VM

Note: Please make sure to schedule a maintenance window before doing so.

Let’s check now if all VMs are upgraded successfully to version 8.0!



[email protected]

About Charbel Nemnom 577 Articles
Charbel Nemnom is a Cloud Architect, Swiss Certified ICT Security Expert, Microsoft Most Valuable Professional (MVP), and Microsoft Certified Trainer (MCT), totally fan of the latest's IT platform solutions, accomplished hands-on technical professional with over 17 years of broad IT Infrastructure experience serving on and guiding technical teams to optimize the performance of mission-critical enterprise systems. Excellent communicator is adept at identifying business needs and bridging the gap between functional groups and technology to foster targeted and innovative IT project development. Well respected by peers through demonstrating passion for technology and performance improvement. Extensive practical knowledge of complex systems builds, network design, business continuity, and cloud security.

Be the first to comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.