Optimize(compact) VHD with PowerShell 3.0(修正版)
Windows Server 2012でHyper-V3.0環境を稼働中。
ディスク容量が足りなくなってきたので、VHDの最適化を行う。
PreCompact.exeにパスを通してある環境で、下記のようなスクリプトを実行
Mount-VHD -Path <VHD File Path> Get-Partition | Where-Object { $_.diskid -like "*VIRTUAL_DISK*" -and $_.Driveletter} | ForEach-Object { Optimize-Volume $_.DriveLetter | Precompact.exe -SetDisks:<DriveLetter>} Dismount-VHD -Path <VHD File Path> Optimize-VHD -Path <VHD File Path>
最適化前のdefragとPrecompactが必要かどうかはよくわからないのですが、何もしないVHDをOptimizeしても、サイズはほとんど変化なし。
Precompactが不要なら、PowerShell3.0だけで実装できるので、あとで確認してみたいと思う。