Here’s how to convert a bunch of VHD files in a directory to VHDX. The actual conversion process uses the Convert-VHD cmdlet so you need to be on Windows 8 or Windows Server 2012.
|
1 |
PS> Get-Item *.vhd | %{ $vhd = $_.Name; $vhdx = $_.Name.Replace("vhd","vhdx"); Convert-VHD "$vhd" "C:\Hyper-V\Virtual Hard Disks$vhdx" } |
I am storing all the VHDX files at “C:\Hyper-V\Virtual Hard Disks” which is why I put the path there. If you’d rather put the VHDX files in the same location as the VHD files use the following instead:
|
1 |
PS> Get-Item *.vhd | %{ $vhd = "$_"; $vhdx = $vhd.Replace("vhd","vhdx"); Convert-VHD "$vhd" "$vhdx" } |
Note to self: If you convert the objects returned by Get-Item to string (by doing $_) you get the file name with the full path (this is equivalent to $_.FullName). If you want just the file name, use $_.Name. If you want the file name only, without the extension, use $_.BaseName; and if you want the extension only but not the file name use $_.Extension.
