Just recently i had multiple VMs that took about 20 minutes to boot. There is a very neat tool to analyse the Windows Boot process called xbootmgr
xbootmgr -trace boot I was able to see that “autochk” was taking most time of the boot process.
Googling around lead to the point that autochk thinks that the disk is dirty, may do a checkdisk but doesn´r remove the dirty flag.
Solution for me was manually adding that dirty flag to the partition and reboot, causing autochk do fully run a check and finally it cleand up the state.
Setting the state is done by calling
fsutil dirty set C: and if you have multiple partitions you may change the drive letter here.
Hope it helps!