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
Using 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´t 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!