I posted on how to optimize the size of VHDs, but I'm revising that now to include step 2 below >
1) Defragment the VHD (Defraggler was better than the Windows tool)
2) Use Precompact.exe to a "zero out" i.e. overwrite with zeros available blank space. *3) Shut down the VM and Shrink the VHD from Hyper-V.
* Precompact.exe is found in precompactor.ISO which in turn you get from the Virtual PC 2007 installation (in C:\Program Files (x86)\Microsoft Virtual PC\Virtual Machine Additions)
Link : Compacting Hyper-V files