Be sure you have a good backup before trying any of these steps. They worked for me and the problem I was experiencing – DO NOT use these instructions for any problems other than the one described here.
If you mounted one of your VM’s VHDs and then, after un-mounting it, tried to start it on Windows 10 you will get the error message that the VM failed to change state.
If you attempt to inspect the virtual disk in Hyper-V (or from the Virtual Machine Settings), you will get this error message:
There was a problem with one of the command line parameters. Either ‘YourMachineNameHere’ could not be found, or ‘YourVMDiskPathHere’ is not a valid path.
Property ‘MaxInternalSize’ does not exist in class ‘Msvm_VirtualHardDiskSettingData’.
The solution is to use PowerShell to relink the checkpoint differencing disk with the parent VHD.
First, if you have multiple checkpoints, find out which checkpoint disk (AVHDX) points to the parent VHDX file instead of another AVHDX checkpoint differencing disk.
The simplest way to do this for a small number of snapshots is to use the PowerShell command Get-VHD to list the parent disk for each AVHDX file.
PS D:vmsWindows 7 32 SP1Virtual Hard Disks> get-vhd '.Windows 7 32 SP1_14285
ComputerName : DELL-XPS8700
Path : d:vmswindows 7 32 sp1virtual hard diskswindows 7
VhdFormat : VHDX
VhdType : Differencing
FileSize : 4194304
Size : 68719476736
MinimumSize : 68719476736
LogicalSectorSize : 512
PhysicalSectorSize : 4096
BlockSize : 2097152
ParentPath : D:VMsWindows 7 32 SP1Virtual Hard DisksWindows 7
DiskIdentifier : B46EE6F1-46D6-4ED0-BEE8-343509B48C75
Alignment : 1
Attached : False
PS C:WINDOWSsystem32> set-vhd 'd:vmswindows 7 32 sp1virtual hard diskswindows 7
32 sp1_14285771-a2ec-4596-8ed3-2aa162ec280d.avhdx' -ParentPath
"D:VMsWindows 7 32 SP1Virtual Hard DisksWindows 7
Failed to set new parent for the virtual disk.
There exists ID mismatch between the differencing virtual hard disk and the