Предварительно нужно освободить свободное пространство. Хоть и звучит как масло масленное, но как известно при удалении с диска ничего на самом деле не удаляется окончательно.

  • Зануляем виртуальный жесткий диск Windows:
sdelete.exe -z V: [где V: уже подключенный виртуальный диск VHD]
  • Если виртуальная машина с Ubuntu, нужно выполнить зануление свободного пространства:
sudo apt-get install secure-delete
sudo sfill -llz .
  • А вот теперь мы уже можем оптимизировать VHD диск:
diskpart
select vdisk file="путь к vhd"
attach vdisk readonly
compact vdisk
detach vdisk

Ссылки: