Creare cataloghi utilizzando immagini preparate in Azure
-
Creare immagini preparate e utilizzarle per creare un catalogo di macchine MCS tramite:
- Studio
- Comandi PowerShell
I passaggi chiave per creare un catalogo di macchine MCS utilizzando l’immagine preparata sono:
- Creare la definizione dell’immagine e le versioni iniziali dell’immagine.
- Utilizzare la versione dell’immagine come immagine preparata per creare un catalogo.
Utilizzare Studio
Creare una definizione dell’immagine e la versione iniziale dell’immagine
Per creare una definizione dell’immagine e la versione iniziale dell’immagine, procedere come segue:
- Da Studio, accedere al nodo Immagini e fare clic su Crea definizione immagine. Fare clic su Avanti nella pagina Introduzione.
- Nella pagina Definizione immagine, specificare il Tipo di sistema operativo e il Tipo di sessione per la definizione dell’immagine.
- Selezionare un gruppo di risorse esistente o crearne uno nuovo per contenere le risorse dell’immagine. Per abilitare la condivisione delle immagini, selezionare Posiziona versioni immagine nella Azure Compute Gallery e quindi scegliere di creare una nuova galleria o di utilizzarne una esistente per contenere le sue versioni dell’immagine.
-
Nella pagina Immagine, selezionare Risorse (vengono elencate solo le risorse applicabili per la connessione impostata) e un’immagine master da utilizzare come modello per la creazione della versione dell’immagine. È possibile selezionare la casella di controllo Usa un profilo macchina e selezionare un profilo macchina.
Nota:
- Prima di selezionare un’immagine, verificare che l’immagine master abbia VDA 2311 o versione successiva installata e che il driver MCSIO sia installato sul VDA.
- Se si desidera utilizzare un’immagine preparata di tipo VM riservata per creare un catalogo MCS, creare un’immagine preparata utilizzando l’immagine master di tipo VM riservata e un profilo macchina di tipo VM riservata. Vedere VM riservate di Azure per informazioni sulla preparazione di immagini master e profili macchina di tipo VM riservata.
- Prima di selezionare un’immagine, verificare che l’immagine master abbia VDA 2311 o versione successiva installata e che il driver MCSIO sia installato sul VDA.
-
Nella pagina Tipi di archiviazione e licenze, selezionare il tipo di archiviazione e di licenza da utilizzare come parte del processo di preparazione dell’immagine.
Nota:
Se si seleziona un profilo macchina nella pagina Immagine, il tipo di licenza del profilo macchina viene preselezionato in base all’impostazione del profilo.
- Nella pagina Specifiche macchina, selezionare una dimensione della macchina. Se si seleziona un profilo macchina nella pagina Immagine, la dimensione della macchina del profilo macchina viene selezionata per impostazione predefinita.
- Nella pagina NIC, selezionare o aggiungere schede di rete per l’immagine di preparazione. Per ogni scheda di rete, selezionare una rete virtuale associata.
- Nella pagina Impostazioni disco, selezionare la chiave di crittografia gestita dal cliente (CMEK). Se il profilo macchina non dispone di una CMEK ma l’immagine master sì, preseleziona la CMEK dall’immagine master.
- Nella pagina Descrizione versione, immettere una descrizione per la versione iniziale dell’immagine creata.
- Nella pagina Riepilogo, controllare i dettagli della definizione dell’immagine e della versione iniziale dell’immagine creata. Immettere un nome e una descrizione per la definizione dell’immagine. Fare clic su Fine.
Creare versioni dell’immagine
Le versioni dell’immagine consentono la gestione di diverse iterazioni o aggiornamenti di una particolare immagine. Questa funzionalità consente di mantenere più versioni di un’immagine per scopi diversi.
Per creare versioni dell’immagine dalla versione iniziale dell’immagine, procedere come segue:
Nota:
L’unità di hosting di tutte le versioni dell’immagine deve essere la stessa.
- Accedere al nodo Immagini, selezionare una versione dell’immagine o una definizione dell’immagine e fare clic su Crea versione immagine.
- Nella pagina Definizione immagine, è possibile modificare l’unità di hosting e riselezionare l’immagine master e il profilo macchina per quella versione dell’immagine.
- Se si desidera che la configurazione della versione dell’immagine sia diversa dalla versione dell’immagine configurata inizialmente, configurare le impostazioni nelle pagine Tipi di archiviazione e licenze, Specifiche macchina, NIC e Impostazioni disco della finestra di dialogo Crea versione immagine.
- Aggiungere una descrizione per la versione dell’immagine. Fare clic su Fine.

Nota:
Se la creazione della versione dell’immagine fallisce per qualsiasi motivo, la scheda Risoluzione dei problemi in basso fornisce un’opzione Riprova.
Condividere l’immagine preparata
Per condividere le immagini preparate tra diverse unità di hosting per Azure, seguire questi passaggi:
- Fare clic con il pulsante destro del mouse su una versione dell’immagine e selezionare Gestisci condivisione immagine. Vengono visualizzate tutte le unità di hosting nell’ambiente Azure. Le risorse da cui è stata creata la versione dell’immagine sono disabilitate per qualsiasi azione.
- Selezionare le unità di hosting con cui si desidera condividere l’immagine e fare clic su Salva. La colonna Stato condivisione mostra In corso.
- Fare clic sulla scheda Risorse per maggiori dettagli sullo stato della condivisione.
Nota:
Quando lo stato della condivisione della versione dell’immagine è in corso, l’opzione Elimina versione immagine o Gestisci condivisione immagine è disabilitata.
Creare un catalogo di macchine dal nodo Immagini
Utilizzare l’opzione Crea catalogo nel nodo Immagini per creare un catalogo utilizzando la versione dell’immagine.
In alternativa, è possibile selezionare la versione durante la creazione di un catalogo nel nodo Cataloghi macchine, collegandosi all’opzione immagine preparata nel flusso di lavoro di creazione del catalogo. Vedere Creare un catalogo di macchine dal nodo Cataloghi macchine
Per creare un catalogo di macchine MCS dal nodo Immagini, procedere come segue:
- Selezionare una versione dell’immagine e fare clic su Crea catalogo. Fare clic su Avanti nella pagina Introduzione.
- Nella pagina Esperienza desktop, selezionare l’esperienza desktop richiesta.
- Dalla pagina Immagine alla pagina Impostazioni disco, le impostazioni sono preselezionate in base alla versione dell’immagine selezionata.
- Nella pagina Gruppo di risorse, è possibile scegliere di creare un nuovo gruppo di risorse o di utilizzare un gruppo di risorse esistente per posizionare le risorse di questo catalogo.
- Completare le impostazioni nelle pagine seguenti.
- Nella pagina Riepilogo, controllare i dettagli del catalogo di macchine. Immettere un nome e una descrizione per il catalogo di macchine. Fare clic su Fine.
- Andare al nodo Cataloghi macchine per visualizzare il catalogo di macchine creato.
Creare un catalogo di macchine dal nodo Cataloghi macchine
Per creare un catalogo di macchine MCS dal nodo Cataloghi macchine, procedere come segue:
- 1. Fare clic su **Cataloghi macchine** nel riquadro di navigazione sinistro.
- 1. Fare clic su **Crea catalogo di macchine**. Viene visualizzata la pagina **Configurazione catalogo di macchine**. Fare clic su **Avanti** nelle pagine **Introduzione** e **Tipo di macchina**.
- Nella pagina Gestione macchine, selezionare le seguenti impostazioni:
-
- Selezionare Macchine con gestione dell’alimentazione (ad esempio, macchine virtuali o PC blade).
- Selezionare Tecnologia di provisioning Citrix. Quindi, selezionare Citrix Machine Creation Services™.
- Nel campo Risorse, sono elencate le risorse appartenenti a zone diverse. Selezionare qualsiasi risorsa di rete Azure e fare clic su Avanti.
- Selezionare Macchine con gestione dell’alimentazione (ad esempio, macchine virtuali o PC blade).
-
- Nella pagina Immagine:
Per il tipo di immagine preparata, seguire i passaggi:
- Selezionare Immagine preparata.
- Sotto Immagine preparata, selezionare una versione dell’immagine di una definizione di immagine. Se necessario, aggiungere una nota per la versione dell’immagine preparata selezionata.
- Fare clic sul nome della versione dell’immagine. Per visualizzare maggiori dettagli sulla versione dell’immagine selezionata, fare clic sul numero di versione, che è sottolineato.
-
- Se la versione dell’immagine selezionata è configurata con un profilo macchina, selezionare un profilo macchina. Se la versione dell’immagine selezionata non è configurata con un profilo macchina, non è possibile scegliere di utilizzare un profilo macchina.
-
- Configurare le impostazioni nelle pagine seguenti.
- Nella pagina Impostazioni disco, se l’immagine preparata selezionata utilizza un set di crittografia del disco, non è possibile rimuovere il set di crittografia, ma è possibile modificare la chiave con un’altra chiave di crittografia.
- Nella pagina Gruppo di risorse, è possibile scegliere di creare un nuovo gruppo di risorse o di utilizzare un gruppo di risorse esistente per posizionare le risorse di questo catalogo.
- Completare le impostazioni nelle pagine seguenti.
- Nella pagina Riepilogo, controllare i dettagli del catalogo di macchine. Immettere un nome e una descrizione per il catalogo di macchine. Fare clic su Fine.
Utilizzare PowerShell
Creare un’immagine preparata
I comandi PowerShell dettagliati per creare una specifica di versione di immagine preparata sono i seguenti:
-
Controllare i nomi delle definizioni di immagine disponibili utilizzando il comando
Test-ProvImageDefinitionNameAvailable. Ad esempio,Test-ProvImageDefinitionNameAvailable -ImageDefinitionName <string[]> <!--NeedCopy-->-
- Creare una definizione di immagine utilizzando il comando
New-ProvImageDefinition. Ad esempio,
- Creare una definizione di immagine utilizzando il comando
New-ProvImageDefinition -ImageDefinitionName image1 -OsType Windows -VdaSessionSupport MultiSession <!--NeedCopy--> -
-
Creare una nuova configurazione per la definizione dell’immagine nella connessione di hosting specificata utilizzando il comando
Add-ProvImageDefinitionConnection.Le
CustomPropertiesperAdd-ProvImageDefinitionConnectionpossono includere quanto segue. Se non si utilizzano i parametri, vengono utilizzati i valori predefiniti.-
ResourceGroups: Il gruppo di risorse che contiene i dischi di base. -
UseSharedImageGallery: Indicatore per il tipo di dischi di base. Utilizzaretrueper ACG (condivisione di immagini) efalseper snapshot. -
ImageGallery: Il nome della galleria quando il disco di base è una versione di immagine ACG.
Ad esempio,
-
In caso di snapshot e gruppo di risorse fornito dal cliente:
$CustomerOwnRsourceGroupProperties = @" <CustomProperties xmlns="http:// schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="ResourceGroups" Value="yangj_image" /> </CustomProperties> "@ <!--NeedCopy--> -
In caso di ACG e gruppo di risorse e galleria di immagini forniti dal cliente:
$CustomerOwnAllProperties = @" <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" /> <Property xsi:type="StringProperty" Name="ResourceGroups" Value="rg" /> <Property xsi:type="StringProperty" Name="ImageGallery" Value="gallery" /> </CustomProperties> "@ <!--NeedCopy--> -
In case of ACG and customer provided resource group only:
$CustomerOwnResourceGroupProperties = @" <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" /> <Property xsi:type="StringProperty" Name="ResourceGroups" Value="rg" /> </CustomProperties> "@ <!--NeedCopy--> -
In case of ACG and resource group and image gallery managed by Citrix:
$CustomerOwnResourceGroupNothingProperties = @" <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" /> </CustomProperties> "@ <!--NeedCopy-->
Add-ProvImageDefinitionConnection -ImageDefinitionName image1 -HypervisorConnectionName Azure28 [-CustomProperties $CustomProperties] <!--NeedCopy--> -
-
Create an image version using the
New-ProvImageVersioncommand. For example,New-ProvImageVersion -ImageDefinitionName image1 -Description "version 1" <!--NeedCopy--> -
Add a master image version spec to the image version using the
Add-ProvImageVersionSpeccommand. For example,Add-ProvImageVersionSpec -ImageDefinitionName image1 -ImageVersionNumber 1 -HostingUnitName azure -MasterImagePath "XDHyp:\HostingUnits\azure\image.folder\azureresourcegroup.resourcegroup\win2022-snapshot.snapshot" <!--NeedCopy-->Note:
You can add only one master image version spec to one image version for a hosting unit.
-
Create a prepared image version spec from the master image version spec using the
New-ProvImageVersionSpeccommand.The CustomProperties for
New-ProvImageVersionSpeccan include the following. If you do not use the parameters, then default values are used:-
PreparedImageStorageType: The storage type to use for the prepared image. Defaults toStandard_LRS, can also bePremium_LRSorStandard_ZRS.Standard_ZRSprovides zone redundancy for the image.
New-ProvImageVersionSpec -SourceImageVersionSpecUid c6e7384c-b2f8-46d6-9519-29a2c57ed3cb -NetworkMapping @{"0"="XDHyp:\HostingUnits\azure\virtualprivatecloud.folder\azureresourcegroup.resourcegroup\azure-vnet-eastus.virtualprivatecloud\dev.network"} -ServiceOffering"XDHyp:\HostingUnits\azure\serviceoffering.folder\Standard_B2ms.serviceoffering" -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"></CustomProperties>" -RunAsynchronously <!--NeedCopy--> -
-
You can also share a prepared image version spec with another hosting unit in all hosting connections by using the
Add-ProvImageVersionSpecHostingUnitcommand.The CustomProperties for
Add-ProvImageVersionSpecHostingUnitcan include the following. If you do not use the parameters, then values from the source prepared image spec are used:-
PreparedImageStorageType: The storage type to use for the prepared image.
Add-ProvImageVersionSpecHostingUnit -ImageVersionSpecUid xxxxxxx -HostingUnitName AzureWest <!--NeedCopy-->Note:
One hosting unit and preparation type can have only one prepared instance.
-
Example of the complete set of Powershell commands to create image definition, image version, and prepared image version spec:
New-ProvImageDefinition -ImageDefinitionName image1 -OsType Windows -VdaSessionSupport MultiSession
- $ImageDefinitionCustomProperties = @" <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" /> <Property xsi:type="StringProperty" Name="ResourceGroups" Value="rg" /> <Property xsi:type="StringProperty" Name="ImageGallery" Value="gallery" /> </CustomProperties> "@
Add-ProvImageDefinitionConnection -ImageDefinitionName image1 -HypervisorConnectionName Azure28 -CustomProperties $ImageDefinitionCustomProperties
$imageVersion = New-ProvImageVersion -ImageDefinitionName image1 -Description "version 1"
- $SourceImageVersionSpec = Add-ProvImageVersionSpec -ImageVersionUid $imageVersion.ImageVersionUid ` -HostingUnitUid $hostingunit.HostingUnitUid ` -MasterImagePath "XDHyp:\HostingUnits\azure28\image.folder\abc.resourcegroup\def-snapshot.snapshot"
- $ImageVersionSpecCustomProperties = @'
- <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <Property xsi:type="StringProperty" Name="PreparedImageStorageType" Value="Premium_LRS" />
- <Property xsi:type="StringProperty" Name="LicenseType" Value="Windows_Client" />
- </CustomProperties>
'@
New-ProvImageVersionSpec -NetworkMapping @{"0" = "XDHyp:\HostingUnits\azure28\virtualprivatecloud.folder\East US.region\virtualprivatecloud.folder\studio-mcs-infrastructure.resourcegroup\studio-mcs-vnet-eastus.virtualprivatecloud\mcs-dev.network" } -CustomProperties $ImageVersionSpecCustomProperties -ServiceOffering "XDHyp:\HostingUnits\azure28\serviceoffering.folder\Standard_B2s.serviceoffering" -SourceImageVersionSpecUid $SourceImageVersionSpec.ImageVersionSpecUid
$TargetCustomProperties = @'
<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="PreparedImageStorageType" Value="Standard_ZRS" />
</CustomProperties>
'@
Add-ProvImageVersionSpecHostingUnit -ImageVersionSpecUid xxxxxxx -HostingUnitName AzureWest –TargetCustomProperties $TargetCustomProperties
$PreparedImageVersionSpec = Get-ProvImageVersionSpec -ImageVersionUid $imageVersion.ImageVersionUid | Where SourceImageVersionSpecUid-eq $SourceImageVersionSpec.ImageVersionSpecUid
<!--NeedCopy-->
Note:
- All image version specs in an image definition must belong to the same hosting unit.
- An image version can have only one master image version spec and one prepared image version spec.
- All image version specs must either have a machine profile or none of the image version specs must have a machine profile.
Create a catalog using a prepared image version spec
Create an MCS machine catalog from the prepared image version spec using the New-ProvScheme command. For example,
New-ProvScheme -ProvisioningSchemeName <string> -ImageVersionSpecUid <Guid> -HostingUnitUid <Guid> -IdentityPoolUid <Guid> [-VMCpuCount <int>] [-VMMemoryMB <int>] [-UseWriteBackCache] [-NetworkMapping <Hashtable>] [-CleanOnBoot] [-Scope <string[]>] [-Metadata <Hashtable>] [-ServiceOffering <string>] [-SecurityGroup <string[]>] [-TenancyType <string>] [-MachineProfile <string>] [-CustomProperties <string>] [-ResetAdministratorPasswords] [-UseFullDiskCloneProvisioning] [-RunAsynchronously] [-PurgeJobOnSuccess] [-ProvisioningSchemeType <ProvisioningSchemeType>]
[-ImageAssignmentNote <string>]
<!--NeedCopy-->
Or,
- New-ProvScheme -ProvisioningSchemeName <string> -ImageVersionSpecUid <Guid> -HostingUnitName <string> -IdentityPoolName <string> [-VMCpuCount <int>] [-VMMemoryMB <int>] [-UseWriteBackCache] [-NetworkMapping <Hashtable>] [-CleanOnBoot] [-Scope <string[]>] [-Metadata <Hashtable>] [-ServiceOffering <string>] [-SecurityGroup <string[]>] [-TenancyType <string>] [-MachineProfile <string>] [-CustomProperties <string>] [-ResetAdministratorPasswords] [-UseFullDiskCloneProvisioning] [-RunAsynchronously] [-PurgeJobOnSuccess] [-ProvisioningSchemeType <ProvisioningSchemeType>]
[-ImageAssignmentNote <string>]
<!--NeedCopy-->
If you want to use an ACG image version spec, then set UseSharedImageGallery as true. For example,
$provSchemeCustomProperties= @"
<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" />
<Property xsi:type="StringProperty" Name="StorageAccountType" Value="StandardSSD_LRS" />
</CustomProperties>
"@
New-ProvScheme -ProvisioningSchemeName assignimage -ImageVersionSpecUid $PreparedImageVersionSpec.ImageVersionSpecUid `
-HostingUnitUid $hostingunit.HostingUnitUid `
-IdentityPoolUid $IdentityPool.IdentityPoolUid `
-CleanOnBoot -Scope @() -SecurityGroup @() `
-ServiceOffering "XDHyp:\HostingUnits\azure28\serviceoffering.folder\Standard_B2s.serviceoffering" `
-NetworkMapping @{"0"="XDHyp:\HostingUnits\azure28\virtualprivatecloud.folder\East US.region\virtualprivatecloud.folder\studio-mcs-infrastructure.resourcegroup\studio-mcs-vnet-eastus.virtualprivatecloud\mcs-dev.network"} `
-CustomProperties $provSchemeCustomProperties
<!--NeedCopy-->
Example of the complete set of Powershell commands to create a catalog:
$Catalog = New-BrokerCatalog -AllocationType "Random" -IsRemotePC $False -MinimumFunctionalLevel "L7_20" -Name "azurecatalog" -PersistUserChanges "Discard" -ProvisioningType "MCS" -Scope @() -SessionSupport "MultiSession"
$IdentityPool = New-AcctIdentityPool -AllowUnicode -Domain "azure.local" -IdentityPoolName "azurecatalog" -IdentityType "ActiveDirectory" -NamingScheme "azure##" -NamingSchemeType "Numeric" -Scope @()
$PreparedImageVersionSpec = Get-ProvImageVersionSpec -ImageDefinitionName image1 -ImageVersionNumber 1 -Filter "PreparationType -eq 'Mcs'"
$Task = New-ProvScheme -ProvisioningSchemeName azurecatalog -ImageVersionSpecUid $PreparedImageVersionSpec.ImageVersionSpecUid -HostingUnitName azure -IdentityPoolName azurecatalog -CleanOnBoot -Scope @() -SecurityGroup @() -ServiceOffering "XDHyp:\HostingUnits\azure\serviceoffering.folder\Standard_B2s.serviceoffering" -NetworkMapping @{"0"="XDHyp:\HostingUnits\azure\virtualprivatecloud.folder\azureresourcegroup.resourcegroup\azure-vnet-eastus.virtualprivatecloud\dev.network"} -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"> <Property xsi:type="StringProperty" Name="UseSharedImageGallery" Value="true" /><Property xsi:type=`"StringProperty`" Name=`"StorageAccountType`" Value=`"StandardSSD_LRS`" /></CustomProperties>" -RunAsynchronously
Get-ProvTask -TaskId $Task.TaskId
$ProvScheme = Get-ProvScheme -ProvisioningSchemeName azurecatalog
Set-BrokerCatalog -Name $Catalog.Name -ProvisioningSchemeId $ProvScheme.ProvisioningSchemeUid
<!--NeedCopy-->
Create Microsoft Entra joined and Microsoft Intune enrolled catalogs with prepared images
You can now use prepared images to create Microsoft Entra joined and Microsoft Intune enrolled catalogs. This feature is applicable to single and multi-session persistent and non-persistent type MCS catalogs. This implementation significantly reduces the storage and time costs, and simplifies the VM deployment and image update process.
Examples
-
To create a Microsoft Entra catalog using a prepared image.
New-ProvScheme -ProvisioningSchemeName <name> -ImageVersionSpecUid <preparedVersionSpecUid> -HostingUnitUid <hostingUnitUid> -IdentityPoolUid <IdentityPoolUid> [-CleanOnBoot] -NetworkMapping @{"0"="XDHyp:\HostingUnits\<hostingunitName>\<region>.region\virtualprivatecloud.folder\<resourcegroupName>.resourcegroup\<vnetName>.virtualprivatecloud\<sunNetName>.network"} -ServiceOffering <serviceofferingPath> [-MachineProfile <machineProfilePath>] [-CustomProperties <>] <!--NeedCopy--> -
To create a Microsoft Entra catalog enrolled in Microsoft Intune using a prepared image:
New-ProvScheme -ProvisioningSchemeName <name> -ImageVersionSpecUid <preparedVersionSpecUid> -HostingUnitUid <hostingUnitUid> -IdentityPoolUid <IdentityPoolUid> [-CleanOnBoot] -NetworkMapping @{"0"="XDHyp:\HostingUnits\<hostingunitName>\<region>.region\virtualprivatecloud.folder\<resourcegroupName>.resourcegroup\<vnetName>.virtualprivatecloud\<sunNetName>.network"} -ServiceOffering <serviceofferingPath> [-MachineProfile <machineProfilePath>] [-CustomProperties <>] <!--NeedCopy-->
Share prepared images across Azure subscriptions or tenants
To share a prepared image across subscriptions or tenants on the Azure platform, follow this example:
- Service principal: SPN 1
- Subscription: Subscription 1
- Tenant: Tenant 1
You want to share this image with:
- Service principal: SPN 2
- Subscription: Subscription 2
- Tenant: Tenant 2 (can be the same as Tenant 1)
To successfully share and use the image, you must grant SPN 2 the following permissions in Subscription 1—at the gallery, resource group, or subscription scope:
Microsoft.Resources/subscriptions/readMicrosoft.Compute/galleries/images/read-
Microsoft.Compute/galleries/images/versions/readNote:
Any service principal that has any permission on a subscription or resource automatically inherits the
Microsoft.Resources/subscriptions/readpermission.
Alternatively, assign the Compute Gallery Image Reader built-in role to SPN 2.
For step-by-step guidance, see this Microsoft article.
Share encrypted prepared image across regions, subscriptions, and tenants
Azure Compute Gallery (ACG) images can be encrypted with a Disk Encryption Set (DES). With ACG sharing feature, you can share an encrypted prepared image across regions, subscriptions and tenants for Azure. The target resource needs to pick a DES in its region from the subscription where the prepared image belongs. You can thereafter create a machine catalog in the resource where the encrypted prepared image is shared.
The key steps to share an encrypted prepared image are:
- Create Disk Encryption Set (DES) in each region: See the microsoft documentation Use the Azure portal to enable server-side encryption with customer-managed keys for managed disks.
- Create an image definition for the Azure host connection and image versions in Azure Compute Gallery (ACG) and specify the DES to encrypt the prepared image : See Create an image definition and initial image version.
- Share the encrypted prepared image across regions, subscriptions, and tenants: You can use Studio or PowerShell commands.
You can now create a machine catalog in the resource where the encrypted prepared image is shared. For more information on creating the catalog, see Create a prepared image machine catalog in Azure.
Note:
- If the primary region is not encrypted, the shared regions also cannot have DES.
- If two host units target the same region, they have the same DES.
Share the encrypted image across regions, subscriptions, and tenants using Studio
- Right-click an image version and select Manage Image Share. The resources with region and disk encryption set are listed.
-
Select the resources that you want to share with the image version. The resources where the image version is created from is disabled for any actions. Select a DES from the drop-down menu if DES is not configured for a resource.
Note:
Resources within the same region must use the same encryption key.

- Click Save.
-
Click the Resources tab for more details about the sharing status.
Note:
- When the status of the image version sharing is in progress, the option to Delete Image Version or Manage Image Share is disabled.
- When a resource is successfully shared, the DES is not editable.
Share the encrypted image across regions, subscriptions, and tenants using PowerShell
Use the command Add-ProvImageVersionSpecHostingUnit and add the parameter CustomProperties. In CustomProperties, configure the DES for the target resource. When sharing the prepared encrypted image, each resource picks a DES in its region from the subscription which the prepared image belongs to. 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=`"DiskEncryptionSetId`" Value=`"/subscriptions/xxxxxx-7152-46c4-b061-xxxxxx70c/resourceGroups/resourcegroup1/providers/Microsoft.Compute/diskEncryptionSets/desid1`" />"+
"</CustomProperties>"
Add-ProvImageVersionSpecHostingUnit -ImageVersionSpecUid <Guid> -HostingUnitUid <Guid> -CustomProperties $CustomProperties
<!--NeedCopy-->