Citrix MCS Full Clone Disk Moves in XenServer: What the Docs Won’t Tell You
If you're running Citrix Virtual Apps and Desktops 7 2411 or later, there's a powerful new feature that lets you migrate persistent and non-persistent VMs across storage repositories in XenServer. The feature is great. The documentation? Not so much. It's mentioned here in the release notes for 2411 Which may lead you to their code example here Now, that all sounds straightforward—but if you actually try to use the example they provide, you'll likely end up frustrated. What the Docs Get Wrong The official example looks like this: (Get-ProvVM -ProvisioningSchemeName xxxxx) | Move-ProvVMDisk -ProvisioningSchemeName "myFullCloneProvScheme" -VMName "machine01" -DiskType OS,Identity -DestinationStorageId "datastore1","datastore1" It fails with big nasty red error that contains this and other nastiness: Move-ProvVMDisk : The input object cannot be bound to any parameters... Why? Because Move-ProvVMDisk does not accept piped input, even though the docs imply it does. What Actually Works Use this instead: Move-ProvVMDisk -ProvisioningSchemeName "MachineCatalogName" ` -VMName "NameOfVM" ` -DiskType OS,Identity ` -DestinationStorageId "SR_GUID","SR_GUID" Yes — full clones still have identity disks, and you must match the order of -DiskType with -DestinationStorageId. Get the SR GUIDs for Standard Storage $result = Get-ProvSchemeResourceInStorage -ProvisioningSchemeName "YourCatalog" $result.ProvResourceInStorage | Format-List -Property * For Temporary Storage $result.TemporaryStorageInfo | Format-List -Property * Update the Hosting Connection To Include Destination SR Add-HypHostingUnitStorage can be used Or update it manually in Studio or DaaS Studio. Gotchas VM must be powered off Citrix PowerShell SDK must be installed Order of -DiskType and -DestinationStorageId must match If using one SR for both disks, just repeat the GUID Common Error DiskMoveFailedVirtualMachines : {YourVM} TaskState : FinishedWithErrors Usually means: You piped the VM (don’t) SRs weren’t mapped VM was powered on Disk order didn’t match SR order Wrap-Up This feature is awesome once you crack the setup. But the docs don’t cover all this, and that’s where real-world notes like this come in handy. If this helped, follow EliteUC (Elite Universal Computing LLC) for more Citrix + PowerShell pro tips. citrix #xenserver #powershell #euc #sysadmin

If you're running Citrix Virtual Apps and Desktops 7 2411 or later, there's a powerful new feature that lets you migrate persistent and non-persistent VMs across storage repositories in XenServer.
The feature is great. The documentation? Not so much.
It's mentioned here in the release notes for 2411
Which may lead you to their code example here
Now, that all sounds straightforward—but if you actually try to use the example they provide, you'll likely end up frustrated.
What the Docs Get Wrong
The official example looks like this:
(Get-ProvVM -ProvisioningSchemeName xxxxx) | Move-ProvVMDisk -ProvisioningSchemeName "myFullCloneProvScheme" -VMName "machine01" -DiskType OS,Identity -DestinationStorageId "datastore1","datastore1"
It fails with big nasty red error that contains this and other nastiness:
Move-ProvVMDisk : The input object cannot be bound to any parameters...
Why? Because Move-ProvVMDisk
does not accept piped input, even though the docs imply it does.
What Actually Works
Use this instead:
Move-ProvVMDisk -ProvisioningSchemeName "MachineCatalogName" `
-VMName "NameOfVM" `
-DiskType OS,Identity `
-DestinationStorageId "SR_GUID","SR_GUID"
Yes — full clones still have identity disks, and you must match the order of -DiskType
with -DestinationStorageId
.
Get the SR GUIDs for Standard Storage
$result = Get-ProvSchemeResourceInStorage -ProvisioningSchemeName "YourCatalog"
$result.ProvResourceInStorage | Format-List -Property *
For Temporary Storage
$result.TemporaryStorageInfo | Format-List -Property *
Update the Hosting Connection To Include Destination SR
Add-HypHostingUnitStorage can be used
Or update it manually in Studio or DaaS Studio.
Gotchas
- VM must be powered off
- Citrix PowerShell SDK must be installed
- Order of
-DiskType
and-DestinationStorageId
must match - If using one SR for both disks, just repeat the GUID
Common Error
DiskMoveFailedVirtualMachines : {YourVM}
TaskState : FinishedWithErrors
Usually means:
- You piped the VM (don’t)
- SRs weren’t mapped
- VM was powered on
- Disk order didn’t match SR order
Wrap-Up
This feature is awesome once you crack the setup. But the docs don’t cover all this, and that’s where real-world notes like this come in handy.
If this helped, follow EliteUC (Elite Universal Computing LLC) for more Citrix + PowerShell pro tips.