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

Apr 16, 2025 - 17:13
 0
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