Sergey Galushko - Fotolia


Hyper-V VM configuration version becomes increasingly important

The VM configuration version determines the host type the VM can run on and its feature set. Upgrade the version or create a VM that will be backward compatible using these steps.

As is the case for almost any type of software, there has always been a version number associated with Hyper-V...

VMs. In the past, this version number had little significance. Moving forward, however, Hyper-V administrators may find the VM configuration version to be more important than it once was.

Microsoft has begun placing an increased emphasis on VM configuration versions, as evidenced by the recent Windows 10 Anniversary Update. As you are no doubt aware, some editions of Windows 10 include the ability to run Hyper-V on the desktop. Those who created Hyper-V VMs prior to upgrading to the Windows 10 Anniversary Update will find that right-clicking on those VMs reveals a new shortcut menu option, which allows the configuration version to be upgraded.

This raises a couple of important questions. First, how does the configuration version upgrade work? Second, what are the implications of changing the configuration version?

Before upgrading a VM's configuration version, it's possible to check the VM's current configuration version through PowerShell by using this command:

Get-VM * | Select-Object Name, Version

This command causes PowerShell to display the name and the configuration version for each of your VMs. You can see what this looks like in Figure A.

VM name and configuration version
This virtual machine has a configuration version of 7.0.

If you go back to the Hyper-V Manager, right-click on the VM and choose the Upgrade Configuration Version option from the shortcut menu, Windows will display a dialog box that gives you the chance to abort the operation. Depending on the VM's current state, the dialog box might also provide you with some warnings. For example, Windows warns that continuing the operation will cause the VM's saved state data and checkpoints to be lost.

Continuing on with the upgrade is anticlimactic. There is no visual indication that anything has happened. However, performing a version check through PowerShell indicates that a new version number has been assigned to the VM.

So what has really been accomplished by this version upgrade, and why does it matter? One of the primary reasons the configuration version matters is because the configuration version has a direct impact on where the VM can be run.

One of the use cases for desktop Hyper-V is that it allows VMs to be created and tested on desktop computers and then eventually migrated to a server, once the VM is deemed ready for production use. The problem with this is that Windows Server 2012 R2 Hyper-V supports a maximum VM configuration version of 5.0. A VM with a higher configuration version can't be hosted on Windows Server 2012 R2 Hyper-V. The supported configuration versions are as follows:

Windows 8.1/Windows Server 2012 R2               5.0

Windows 10 (pre-10565)                                        5.0, 6.2

Windows 10 (10565 and later)                               5.0, 6.2, 7.0

Windows Server 2016 Technical Preview             5.0, 6.2, 7.0, 7.1

Windows 10 Anniversary Update                           5.0, 6.2, 7.0, 7.1, 8.0

So what happens if you need to create a VM on Windows 10 that will later be migrated to Windows Server? In this situation, the first thing you should do is determine the configuration versions that are supported by the server. While you could use the chart above, Microsoft does occasionally make changes, so it's a good idea to use PowerShell to check the supported versions. This is the command for doing so:


Unfortunately, not every version of Windows supports this command. If you run the command and receive an error, then the next best option is to check the version number of the existing VMs. Figure B, for example, shows that the command does not work on Windows Server 2012 R2, but we can verify that the VMs are running a configuration version of 5.0.

Command error and VM configuration version list
Windows Server 2012 R2 uses a VM configuration version of 5.0.

Running the command on Windows 10 reveals a number of supported versions. Appending the -Default parameter to the command shows us that VMs are now created as version 8.0 by default, as shown in Figure C.

VM configuration version list and defaults
Windows 10 supports a number of configuration versions.

If you want to use Windows 10 to create a VM that will be backward compatible with Windows Server 2012 R2, you will have to use PowerShell's New-VM cmdlet and specify the desired version number. You can see how this works in Figure D.

New-VM cmdlet and version number
It's possible to use PowerShell to create a legacy VM.

Because version numbers determine the host types that the VM can run on, as well as the VM's feature set, they are going to be increasingly important going forward.

Next Steps

Introduction to Windows Server 2016 features

Understand virtualization file and disk formats

Secure Hyper-V VMs in Windows Server 2016

Dig Deeper on Virtual machine provisioning and configuration