Citrix DaaS

Manage a VMware catalog

Manage machine catalogs describes the wizards that manage a machine catalog. The following information covers details specific to VMware virtualization environments.

Note:

Before managing a VMware catalog, you need to finish creating a VMware catalog. See Create a VMware catalog.

Update provisioned VMs to current provisioning scheme state

The Set-ProvScheme command changes the provisioning scheme. However, it does not affect existing VMs. Using the PowerShell command Set-ProvVMUpdateTimeWindow, you can apply the current provisioning scheme to an existing persistent or non-persistent VM or set of VMs. This feature is applicable to machine profile and non-machine profile-based machine catalog.

You can update the following:

  • VMCpuCount: Provisioning scheme property
  • VMMemoryMB: Provisioning scheme property
  • Folder ID: Custom property
  • Subnet mapping: Provisioning scheme property
  • Hardware version of VM: Only for machine profile-based machine catalog
  • Machine profile: Only for machine profile-based machine catalog

You can update:

  • A single VM
  • A list of specific VMs or all existing VMs associated with a provisioning scheme ID
  • A list of specific VMs or all existing VMs associated with a provisioning scheme name (machine catalog name)

Before updating the existing VMs

  1. Check the configuration of the existing VMs. For example:

    Get-ProvScheme | select ProvisioningSchemeName, ProvisioningSchemeVersion
    <!--NeedCopy-->
    
  2. Update the provisioning scheme. For example:

    $customProperties=<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Property xsi:type="StringProperty" Name="FolderId" Value="FOLDER_ID"/></CustomProperties>
    $memoryMb=<DOUBLE THE "UPDATE" MACHINE PROFILE>
    Set-ProvScheme -ProvisioningSchemeName my-catalog -VMCpuCount 4 -VmMemoryMb $memoryMb -CustomProperties $customerProperties -NetworkMapping @{"1" = "<A_NETWORK_PATH_FROM_THE_HOSTING_UNIT>"} -MachineProfile "<PATH_TO_UPDATE_MACHINE_PROFILE>"
    <!--NeedCopy-->
    
  3. Check if the current property of the VM matches the current provisioning scheme, and if there is any pending update action on the VM. For example:

    Get-ProvVM | select VMName, ProvisioningSchemeUpdateRequested, ProvisioningSchemeVersion
    <!--NeedCopy-->
    

    You can also find VMs with a particular version. For example:

    Get-ProvVM -Filter "ProvisioningSchemeVersion -eq 1" | select VMName, ProvisioningSchemeVersion
    <!--NeedCopy-->
    

Request updates for existing VMs to apply at the next restart

  1. Run the following commands to update existing VMs and have the updates apply at the next restart.

    • To update all the existing VMs. For example:

       Set-ProvVMUpdateTimeWindow -ProvisioningSchemeName my-catalog -StartsNow -DurationInMinutes -1
       <!--NeedCopy-->
      
    • To update a list of specific VMs. For example:

       Set-ProvVMUpdateTimeWindow -ProvisioningSchemeName my-catalog -VMName <List-Of-Vm-Names> -StartsNow -DurationInMinutes -1
       <!--NeedCopy-->
      
    • To update VMs based on the output of Get-ProvVM. For example:

      Get-ProvVM -ProvisioningSchemeName "my-catalog" | Set-ProvVMUpdateTimeWindow -ProvisioningSchemeName my-catalog -StartsNow -DurationInMinutes -1
       <!--NeedCopy-->
      

    Note:

    • The StartsNow indicates that the scheduled start time is the current time.
    • The DurationInMinutes with a negative number (for example, –1) indicates no upper bound on the schedule’s time window.
  2. Find VMs with an update scheduled. For example:

    Get-ProvVM -Filter "ProvisioningSchemeUpdateAfter" | select VMName, ProvisioningSchemeUpdateAfter
    <!--NeedCopy-->
    
  3. Restart the VMs. At the next power-up, property changes are applied to the existing VMs. You can check the updated status using the following command. For example:

    Get-ProvVM | select VMName, ProvisioningSchemeUpdateRequested, ProvisioningSchemeVersion
    <!--NeedCopy-->
    

Cancel the configuration update

You can also cancel a configuration update of a single VM, multiple VMs, or an entire catalog. To cancel a configuration update:

  1. Run Clear-ProvVMUpdateTimeWindow. For example:

    • To cancel the configuration update scheduled for a single VM:

       Clear-ProvVMUpdateTimeWindow -ProvisioningSchemeName “ my-catalog “ -VMName “vm1”
       <!--NeedCopy-->
      
    • To cancel the configuration update scheduled for multiple VMs:

       Clear-ProvVMUpdateTimeWindow -ProvisioningSchemeName "my-catalog" -VMName "vm1","vm2"
       <!--NeedCopy-->
      

      Note:

      The VMs must be from the same catalog.

Update the folder ID of a machine catalog

You can update the folder ID of an MCS machine catalog by specifying the FolderId in the custom properties of Set-ProvScheme command. The VMs created after updating the folder ID are created under this new folder ID. If this property is not specified in CustomProperties, then VMs are created under the folder where the master image is located.

Perform the following steps to update the folder ID of a machine catalog.

  1. Open a Web browser and enter the URL for the vSphere Web Client.
  2. Enter the credentials and click Login.
  3. Create a VM placement folder in vSphere Web Client.
  4. Open a PowerShell window.
  5. Run asnp citrix* to load the Citrix-specific PowerShell modules.
  6. Specify the FolderID in the CustomProperties of Set-ProvScheme. In this example, the folder ID value is group-v2406.

    Set-ProvScheme -ProvisioningSchemeUid "50bb319c-2e83-4a37-9ea1-94f630687372" -CustomProperties "<CustomProperties xmlns=""http://schemas.citrix.com/2014/xd/machinecreation"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""><Property xsi:type=""StringProperty"" Name=""FolderId"" Value=""group-v2406"" /></CustomProperties>"
    <!--NeedCopy-->
    
  7. Add a VM to the machine catalog using Studio.
  8. Check the new VM on vSphere Web Client. The new VM is created under the new folder.

Find the folder ID using PowerShell commands

Use the PowerShell command Get-HypConfigurationDataForItem to find the folder ID for an existing folder in a VMware Hypervisor.

Create a hosting connection and resource group for a VMware Hypervisor. Then, perform the following steps to find the folder ID of a folder on that hypervisor.

  1. Determine the XDHyp path to the root of the VM folder tree. For example:

    XDHyp:\Connections\VMwareConn\Datacenter.datacenter
    <!--NeedCopy-->
    
  2. Use Get-HypConfigurationDataForItem to retrieve the tree structure. For example:

    Get-HypConfigurationDataForItem -LiteralPath XDHyp:\Connections\VMwareConn\Datacenter.datacenter
    <!--NeedCopy-->
    
  3. Run the following command to identify the folder ID from the output XML. In this example, look for the folder ID of ExampleFolder in the XML output.

    $result = Get-HypConfigurationDataForItem -LiteralPath XDHyp:\Connections\VMwareConn\Datacenter.datacenter
    $result.VmPlacementFolder
    <!--NeedCopy-->
    

    XML output:

    <?xml version="1.0" encoding="utf-16"?>
    <CtxVmPlacementFolder xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Name>vm</Name>
    <Id>group-v4</Id>
    <SubFolder>
    <CtxVmPlacementFolder>
      <Name>vCLS</Name>
      <Id>group-v75</Id>
      <SubFolder />
    </CtxVmPlacementFolder>
    <CtxVmPlacementFolder>
      <Name>MyOtherFolder</Name>
      <Id>group-v1110</Id>
      <SubFolder />
    </CtxVmPlacementFolder>
    <CtxVmPlacementFolder>
      <Name>ExampleFolder</Name>
      <Id>group-v4658</Id>
      <SubFolder />
    </CtxVmPlacementFolder>
    </SubFolder>
    </CtxVmPlacementFolder>
    <!--NeedCopy-->
    

Find the folder ID in vSphere

Access the MOB on any ESXi or vCenter server system to find the folder ID of the VMs.

The Managed Object Browser (MOB) is a web-based server application available inbuilt in all ESX/ESXi and vCenter server systems. This vSphere utility allows you to view detailed information about objects like VMs, datastores, and resource pools.

  1. Open a web browser and enter http://x.x.x.x/mob, where x.x.x.x is the IP address of the vCenter Server or ESX/ESXi host. For example, https://10.60.4.70/mob.
  2. On the Home page of MOB, click the value of the property content.
  3. Click the value of the rootFolder.
  4. Click the value of the childEntity.
  5. Click the value of the vmFolder.
  6. You can find the folder ID in the value of the childEntity.

Identify resources created by MCS

Following are the tags that MCS adds to the resources on VMware platform. The tags in the table are represented as “key”:”value”.

Resource name Tag
Preparation VM “CitrixProvisioningSchemeId”: “xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”
  “XdConfig:”XdProvisioned=True”
VM in catalog “CitrixProvisioningSchemeId”: “xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”
  “XdConfig:”XdProvisioned=True”

More information

Manage a VMware catalog