The Provisioning Services VhdUtil utility included in PVS 7.1 and later versions allows for the management of PVS vDisk versions outside of the PVS console, which is completely unaware of the vDisk changes made by this utility.
This article will cover two commands included in the VhdUtil utility as of PVS 7.1.4 and PVS 7.6.1.
Note: These commands only work with vhd type files and cannot be used with vhdx files.
Instructions
The VhdUtil commands should be run from a command prompt (an elevated prompt is not required, it cannot be run in PowerShell) in the C:\Program Files\Citrix\Provisioning Services directory. You may also copy the VhdUtil utility to whatever folder you would like to run the command from. All VhdUtil commands are case sensitive.
VhdMergeUsed to perform a
manual full merge to a new base image outside of the PVS console.
Example command to merge the disk chain from “MyVDisk.3.avhd” to base “MyVDisk.vhd” into a new disk “E:\vDiskStore\MyVDiskMerged.vhd”:
rundll32 VhdUtil.dll,VhdMerge E:\vDiskStore\MyVDisk.3.avhd MyVDisk.vhd E:\vDiskStore\MyVDiskMerged.vhd>E:\vDiskStore\MergeLog.txt
The steps of the merging process are logged into file E:\vDiskStore\MergeLog.txt.

This process does not delete the old vDisk or its versions from the store or the PVS console. They will have to be manually deleted.
Import the new vDisk to the PVS console.
VhdRenameUsed to rename the vDisk vhd chains that have existing versions. For renaming specifically, make a copy of the original vDisk and rename the copy. The renaming is a critical action, as we are modifying the disk chain. We found that if the network does not have a timing service, a remote slow storage might cause incorrect timestamp vs. the hosting server.
Example command to rename the entire disk chain from vDisk "MyVDisk" in E:\vDiskStore folder (e.g. from version 3 to base) to "MyNewVDisk":
rundll32 VhdUtil.dll,VhdRename E:\vDiskStore\MyVDisk.3.avhd MyNewVDisk>E:\vDiskStore\RenameLog.txt
The old vdisk chain information for each version and the renaming process are logged into file E:\vDiskStore\RenameLog.txt.


You can then run the VhdDump command to get the info of the renamed vdisk.
A manifest (XML) file with the new vDisk name will be created in the store.
Import the new vDisk into the PVS console, unassign the old vDisk from all targets and assign the new vDisk to them.
Delete the old vDisk but leave the .vhd files.

If you try to delete the associated .vhd files, the error “Management Interface: vDisk properties were lost” will be displayed.