Citrix Virtual Apps and Desktops

Create a VMware catalog

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

Note:

Before creating a VMware catalog, you need to finish creating a connection to VMware. See Connection to VMware.

Create a master VM

Use a master VM to provide user desktops and applications in a machine catalog. On your hypervisor:

  1. Install a VDA on the master VM, selecting the option to optimize the desktop, which improves performance.
  2. Take a snapshot of the master VM to use as a back-up.

Note:

You can use MCS to provision VMs in vSAN 8.0 environment.

Create a machine catalog using a machine profile

You can create an MCS machine catalog using a machine profile. The source of the machine profile input is a VMware template. The machine profile captures the hardware properties from a VMware template and applies them to the newly provisioned VMs in the catalog.

Note:

  • Master image input (snapshot) and machine profile input (VMware template) must either be both vTPM enabled or both vTPM disabled. This rule applies to both New-ProvScheme and Set-ProvScheme.
  • If the master image is vTPM enabled, then the VMware template can only come from the same VM source as the master image.
  • Encrypted storage policy only supports full clone.

The VMware template in the machine profile must exist during the catalog life cycle to allow provisioning of VMs to the catalog. Without a VMware template, you cannot provision new VMs. When a VMware template gets deleted, you must supply a new template using the Set-ProvScheme command.

  • MCS captures properties of a VMware template. You can create new a VMware template referencing stored properties of VMware template using the Get-Provscheme command.
  • Alternatively, if the machine catalog and provisioned VMs exist, then an MCS provisioned machine can also be used to create a new VMware template.

Based on different OS, you can create a machine catalog with different configurations:

  • If windows 11 is installed on the master image, then it is a requirement to have vTPM enabled for the master image. Therefore, the VMware template, which is a source of machine profile, must have vTPM attached to it.
  • If windows 10 is installed on the master image with no vTPM attached, then you can create a machine catalog with non-vTPM VMware template as source for machine profile.

There is another configuration where you can create a machine catalog using full copy disk mode with machine profile template applied with encrypted storage policy.

To create a machine catalog using PowerShell commands with machine profile as input:

  1. Open a PowerShell window.
  2. Run asnp citrix*.
  3. Run the following commands:

    • To create a machine catalog with vTPM attached VMware template as a source for machine profile input and windows11 installed master image:

       $identityPool = New-AcctIdentityPool  -IdentityPoolName "<string>"
       -NamingScheme "<string>-###"
       -NamingSchemeType Numeric
       -Domain "<domain name"
       -ZoneUid "<Uid>"  -Scope @()
       <!--NeedCopy-->
      
       $provScheme =New-ProvScheme  -CleanOnBoot
       -HostingUnitName "vSanRg"
       -IdentityPoolName "<string>"
       -InitialBatchSizeHint 1
       -MasterImageVM "XDHyp:\HostingUnits\<hosting unit name>\<snapshot name>.snapshot"
       -NetworkMapping @{"0"="XDHyp:\HostingUnits\<hosting unit name>\\<network name>.network"}
       -ProvisioningSchemeName "<string>"
       -Scope @() -VMCpuCount 4
       -VMMemoryMB 6144
       -MachineProfile "XDHyp:\HostingUnits\<hosting unit name>\<template name>.template" -TenancyType Shared
       -FunctionalLevel "L7_20"
       <!--NeedCopy-->
      
       $catalog = New-BrokerCatalog
       -AllocationType "Static"
       -PersistUserChanges  "OnLocal"
       -Description "<string>"
       -IsRemotePC $False
       -MinimumFunctionalLevel 'L7_9'
       -Name "<catalog name>"
       -ProvisioningType 'MCS'
       -Scope @()
       -SessionSupport "SingleSession" -ZoneUid "<Uid>"
       <!--NeedCopy-->
      
       Set-BrokerCatalog -Name "<string>"
       -ProvisioningSchemeId $provScheme.ProvisioningSchemeUid.Guid
       <!--NeedCopy-->
      
    • To create a machine catalog with Non-vTPM VMware template as source for machine profile and Windows10 installed master image:

       $identityPool = New-AcctIdentityPool
       -IdentityPoolName "<string>"
       -NamingScheme "<string>-###" -NamingSchemeType Numeric
       -Domain "<domain name>"
       -ZoneUid "<Uid>"  -Scope @()
       <!--NeedCopy-->
      
       $provScheme =New-ProvScheme
       -CleanOnBoot -HostingUnitName "<string>"
       -IdentityPoolName "<string>"
       -InitialBatchSizeHint 1
       -MasterImageVM "XDHyp:\HostingUnits\<hosting unit name>\<snapshot name>.snapshot
       -NetworkMapping @{"0"="XDHyp:\HostingUnits\<hosting unit name>\\<string>.network"}
       -ProvisioningSchemeName "<string>"  -Scope @() -VMCpuCount 4  -VMMemoryMB 8192
       -MachineProfile "XDHyp:\HostingUnits\<hosting unit name>\<template name>.template"
       -TenancyType Shared  -FunctionalLevel "L7_20"
       <!--NeedCopy-->
      
       $catalog = New-BrokerCatalog
       -AllocationType "Static"
       -PersistUserChanges  "OnLocal"
       -Description "<string>"
       -IsRemotePC $False
       -MinimumFunctionalLevel 'L7_9' -Name "<string>" -ProvisioningType 'MCS' -Scope @()
       -SessionSupport "SingleSession" -ZoneUid "<Uid"
       <!--NeedCopy-->
      
       Set-BrokerCatalog -Name "<string>"
       -ProvisioningSchemeId $provScheme.ProvisioningSchemeUid.Guid
       <!--NeedCopy-->
      
    • To create a machine catalog using Full copy disk mode with machine profile template applied with encrypted storage policy:

       $identityPool = New-AcctIdentityPool
       -IdentityPoolName "<string>"
       -NamingScheme "<string>-###"
       -NamingSchemeType Numeric
       -Domain "<domain name>"
       -ZoneUid "<Uid>"  -Scope @()
       <!--NeedCopy-->
      
       $provScheme =New-ProvScheme
       -HostingUnitName "<string>"
       -IdentityPoolName "<string>"
       -InitialBatchSizeHint 1
       -MasterImageVM "XDHyp:\HostingUnits\<hosting unit name>\<snapshot name>.snapshot"
       -NetworkMapping @{"0"="XDHyp:\HostingUnits\<hosting unit name>\\<string>.network"}
       -ProvisioningSchemeName "<string>"
       -Scope @() -VMCpuCount 4  -VMMemoryMB 8192 -MachineProfile "XDHyp:\HostingUnits\<hosting unit name>\<template name>.template"
       -TenancyType Shared
       -FunctionalLevel "L7_20" -UseFullDiskCloneProvisioning
       <!--NeedCopy-->
      
       $catalog = New-BrokerCatalog
       -AllocationType "Static"
       -PersistUserChanges  "OnLocal"
       -Description "<string>"  -IsRemotePC $False
       -MinimumFunctionalLevel 'L7_9'
       -Name "<string>" -ProvisioningType 'MCS' -Scope @()
       -SessionSupport "SingleSession" -ZoneUid "<Uid>"
       <!--NeedCopy-->
      
       Set-BrokerCatalog -Name "<string>"
       -ProvisioningSchemeId $provScheme.ProvisioningSchemeUid.Guid
       <!--NeedCopy-->
      

To update a machine profile, use the Set-ProvScheme command. For example:

Set-ProvScheme -ProvisioningSchemeName 'name' -IdentityPoolName 'name' -MachineProfile 'XDHyp:\HostingUnits\<hosting unit name>\<template name>.template'
<!--NeedCopy-->

Check for multiple NICs

You get various error messages during the pre-flight checks for multiple NICs when using a machine profile and the NetworkMapping parameter in the New-ProvScheme and Set-ProvScheme commands.

The pre-flight checklist for multiple NICs is as follows:

  • Only NIC count from the machine profile template is used and validated. The network to which these NICs point towards is not used or validated against the hosting unit networks.
  • If the NIC count in the machine profile template is greater than the number of networks in the hosting unit, you get an error message.
  • If the NIC count in the machine profile template is zero, you get an error message. When the NIC count in the machine profile template is one, then:

    • If no network mapping is specified in the New-ProvScheme or Set-ProvScheme command, and the hosting unit network is one, then the hosting unit network is used.
    • If network mapping is specified, then the specified network mapping is used if it is valid.
  • When the NIC count in the machine profile template is greater than 1, or the hosting unit network count is greater than 1, then:

    • Valid network mapping is required in the command, and it should provide mapping for each NIC (that is, NetworkMapping count should be same as the machine profile NIC count).
    • Multiple NICs cannot be mapped to the same network in the hosting unit.
    • NetworkMapping count and machine profile NIC count must be less than or equal to the hosting unit network count.
    • NetworkMapping must be provided for each id from 0 to n-1, where n is the number of network adapters in the machine profile template.

Troubleshooting

If the catalog fails to create, see CTX294978.

Where to go next

More information

Create a VMware catalog