How to Upgrade Hyper-V Virtual Machine Configuration Versions in Windows 11 Using PowerShell

When running Microsoft Hyper-V on Windows 11, virtual machines maintain an underlying metadata and file format structure known as the Virtual Machine Configuration Version. When virtual machines are migrated, exported, or restored from earlier hypervisor releases—such as Windows Server 2016, Windows Server 2019, or Windows 10—Hyper-V preserves the older configuration version to maintain backwards compatibility and allow reverse live migrations. However, running legacy configuration versions restricts guest virtual machines from utilising modern hypervisor capabilities, such as virtual TPM 2.0 chips, Secure Boot template customisation, hot-add memory/network features, and advanced VMQ scheduling. Using PowerShell cmdlets like Get-VMHostSupportedVersion and Update-VMVersion, systems administrators can inspect and upgrade virtual machine configuration versions to unlock the full performance and security baseline of Windows 11.

Understanding Hyper-V Virtual Machine Configuration Versions

The configuration version dictates how virtual machine state, settings, and memory dumps are structured on disk (transitioning from legacy XML files to modern .vmcx binary configuration and .vmrs runtime state files). Common configuration version milestones include:

  • Version 5.0: Windows 8.1 and Windows Server 2012 R2. Uses legacy .xml configuration files.
  • Version 8.0: Introduced with Windows Server 2016 and Windows 10 (Version 1607). Introduced binary .vmcx metadata, discrete device assignment (DDA), and production checkpoints.
  • Version 9.0 – 9.3: Windows Server 2019 and Windows 10 (Versions 1809 through 20H2). Added virtual persistent memory (vPMEM), core scheduling, and hibernating virtual machine support.
  • Version 10.0 – 11.0+: Windows Server 2022 and Windows 11. Unlocks hardware-enforced virtualisation security, enhanced vTPM, dynamic processor core assignment, and improved nested virtualisation performance.

Crucial Upgrade Consideration: Upgrading a virtual machine configuration version is an irreversible operation. Once upgraded to a newer version, the virtual machine cannot be moved back to a host running an older Windows or Hyper-V Server release. Always confirm host cluster compatibility before upgrading.

Auditing Supported Hyper-V Versions on Windows 11

Before modifying any virtual machine, review the configuration versions supported by your current Windows 11 Hyper-V hypervisor. Open PowerShell with elevated administrative privileges:

# List all configuration versions supported by the local Hyper-V host
Get-VMHostSupportedVersion

# Identify the default version assigned to newly provisioned virtual machines
Get-VMHostSupportedVersion | Where-Object { $_.IsDefault -eq $true }

The output lists the version numbers along with compatibility descriptions, confirming the maximum version your host can host and execute.

Auditing Existing Virtual Machine Configuration Versions

Query your current virtual machines to identify candidates running outdated configuration versions:

# Query all virtual machines and display their current configuration version
Get-VM | Select-Object Name, State, Version, Generation

# Filter for virtual machines that are eligible for an upgrade
$defaultVersion = (Get-VMHostSupportedVersion | Where-Object { $_.IsDefault }).Version
Get-VM | Where-Object { [version]$_.Version -lt [version]$defaultVersion } | Select-Object Name, Version, State

Preparing the Virtual Machine for Upgrade

To upgrade the configuration version, the target virtual machine must be powered off. An active or saved virtual machine cannot be upgraded:

# Gracefully stop the virtual machine
Stop-VM -Name "Legacy-Workload-01" -Passthru

# Verify the state reports 'Off'
Get-VM -Name "Legacy-Workload-01" | Select-Object Name, State

Additionally, if you rely on older standard checkpoints that reference legacy XML states, consider merging or verifying checkpoints before executing the upgrade.

Upgrading the Configuration Version with Update-VMVersion

To execute the upgrade, invoke the Update-VMVersion cmdlet, targeting the specific virtual machine name:

# Upgrade the virtual machine to the latest supported host version
Update-VMVersion -VMName "Legacy-Workload-01" -Force

# Upgrade all eligible virtual machines across the host simultaneously
Get-VM | Where-Object { [version]$_.Version -lt [version]$defaultVersion } | ForEach-Object {
    if ($_.State -eq 'Off') {
        Write-Host "Upgrading $($_.Name)..." -ForegroundColor Cyan
        Update-VMVersion -VMName $_.Name -Force
    } else {
        Write-Warning "Skipping $($_.Name) because it is currently running."
    }
}

Passing the -Force parameter suppresses the interactive confirmation prompt, streamlining automated maintenance scripts.

Verifying Upgrade Completion and Unlocked Features

Once the upgrade completes, verify that the configuration version reflects the latest baseline:

# Confirm the new version property
Get-VM -Name "Legacy-Workload-01" | Select-Object Name, Version, State

# Start the upgraded virtual machine
Start-VM -Name "Legacy-Workload-01"

With the upgraded configuration version active, modern features such as Set-VMMemory -Priority, vTPM 2.0 enabling via Enable-VMTPM, and enhanced vRSS multi-queue capabilities can now be configured and managed without hypervisor version constraint warnings.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.