VM Generations

When creating a new virtual machine, Hyper-V will ask if you’d like to create a first or second generation VM. Below is a quick overview of the differences between the two options. In 2024, the correct option is almost always a Generation Two VM however, you may run into rare exceptions from time to time.

Differences

Generation One is recommended for the following operating systems:

  • Running Windows 2008 or 2008 R2.
  • Running the 32-bit version of Windows 7,8,8.1 and 10.
  • Running any ancient version of Windows such as XP or Vista.
  • Running CentOS 5 or older.
  • Running Debian 7.X or older.
  • Running any version of FreeBSD.

Below outlines the benefits of selecting Generation Two over its older counterpart.

  • Secure Boot.
  • Allows for a larger boot volume (64TB max for .vhdx)
  • Slightly better VM performance.
  • Native mouse/keyboard support. Emulation is no longer required.
  • Drops the need for the Legacy Network Adapter (an emulated network adapter).
  • Drops the BIOS for UEFI.
  • Enables Dynamic Memory.

For more information please see Microsoft’s Docs.

Determining a VMs Generation

The following PowerShell command will output the generation a virtual machine is running as. Run this command from the hypervisor.

# Command: 
Get-VM -ComputerName VMNAME | Format-list Name,Generation
# Output:
Name       : VMNAME
Generation : 2