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.

Example output:

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
32 sp1_14285771-a2ec-4596-8ed3-2aa162ec280d.avhdx
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
32 SP1.vhdx
DiskIdentifier          : B46EE6F1-46D6-4ED0-BEE8-343509B48C75
FragmentationPercentage :
Alignment               : 1
Attached                : False
DiskNumber              :
Number                  :
So we can see that this is our desired snapshot since ParentPath points to our VHDX file. Read more about Get-VHD here: PowerShell Get-VDH
Next, use Set-VHD to set exactly the same parent disk as we found above.

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
32 SP1.vhdx"
If the Ignore ID Mismatch option is not used, you will get the error:

Failed to set new parent for the virtual disk.
There exists ID mismatch between the differencing virtual hard disk and the
parent disk.
Read more about Set-VHD here: PowerShell Set-VHD
Courtsey :