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

2 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!





How to Expand and Resize Storage Spaces Direct CSV Volume? #WS2016 #HyperV #S2D

An Unexpected Error Occurred During DPM 2016 Installation ID: 4387 #SysCtr #SCDPM


Let me know what you think, or ask a question...

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

Subscribe to Stay in Touch

Never miss out on your favorite posts and our latest announcements!

The content of this website is copyrighted from being plagiarized!

You can copy from the 'Code Blocks' in 'Black' by selecting the Code.

Please send your feedback to the author using this form for any 'Code' you like.

Thank you for visiting!