Kataloge mit vorbereiteten Images in Azure erstellen
-
Erstellen Sie vorbereitete Images und verwenden Sie diese, um einen MCS-Maschinenkatalog zu erstellen, indem Sie Folgendes nutzen:
- Studio
- PowerShell-Befehle
Die wichtigsten Schritte zum Erstellen eines MCS-Maschinenkatalogs mit dem vorbereiteten Image sind:
- Erstellen Sie die Imagestruktur und die anfänglichen Imageversionen.
- Verwenden Sie die Imageversion als vorbereitetes Image, um einen Katalog zu erstellen.
Studio verwenden
Imagestruktur und anfängliche Imageversion erstellen
Gehen Sie wie folgt vor, um eine Imagestruktur und die anfängliche Imageversion zu erstellen:
- Navigieren Sie in Studio zum Knoten Images und klicken Sie auf Imagestruktur erstellen. Klicken Sie auf der Seite Einführung auf Weiter.
- Geben Sie auf der Seite Imagestruktur den OS-Typ und den Sitzungstyp für die Imagestruktur an.
- Wählen Sie eine vorhandene Ressourcengruppe aus oder erstellen Sie eine neue, um die Imagressourcen aufzunehmen. Um die Imagefreigabe zu aktivieren, wählen Sie Imageversionen in der Azure Compute Gallery platzieren und wählen Sie dann, ob Sie eine neue Galerie erstellen oder eine vorhandene verwenden möchten, um die Imageversionen aufzunehmen.
-
Wählen Sie auf der Seite Image die Option Ressourcen (nur die für die festgelegte Verbindung anwendbaren Ressourcen werden aufgelistet) und ein Masterimage aus, das als Vorlage zum Erstellen der Imageversion verwendet werden soll. Sie können das Kontrollkästchen Maschinenprofil verwenden aktivieren und ein Maschinenprofil auswählen.
Hinweis:
- Vergewissern Sie sich vor der Auswahl eines Images, dass auf dem Masterimage VDA 2311 oder höher installiert ist und der MCSIO-Treiber auf dem VDA installiert ist.
- Wenn Sie ein vorbereitetes Image vom Typ vertrauliche VM verwenden möchten, um einen MCS-Katalog zu erstellen, erstellen Sie ein vorbereitetes Image mit dem Masterimage vom Typ vertrauliche VM und einem Maschinenprofil vom Typ vertrauliche VM. Informationen zur Vorbereitung von Masterimages und Maschinenprofilen vom Typ vertrauliche VM finden Sie unter Vertrauliche Azure-VMs.
- Vergewissern Sie sich vor der Auswahl eines Images, dass auf dem Masterimage VDA 2311 oder höher installiert ist und der MCSIO-Treiber auf dem VDA installiert ist.
-
Wählen Sie auf der Seite Speicher- und Lizenztypen den Speicher- und Lizenztyp aus, der im Rahmen des Imagevorbereitungsprozesses verwendet werden soll.
Hinweis:
Wenn Sie auf der Seite Image ein Maschinenprofil auswählen, wird der Lizenztyp des Maschinenprofils basierend auf der Profileinstellung vorab ausgewählt.
- Wählen Sie auf der Seite Maschinenspezifikation eine Maschinengröße aus. Wenn Sie auf der Seite Image ein Maschinenprofil auswählen, wird die Maschinengröße des Maschinenprofils standardmäßig ausgewählt.
- Wählen oder fügen Sie auf der Seite NICs NICs für das Vorbereitungsimage hinzu. Wählen Sie für jede NIC ein zugehöriges virtuelles Netzwerk aus.
- Wählen Sie auf der Seite Datenträgereinstellungen den vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) aus. Wenn das Maschinenprofil keinen CMEK hat, das Masterimage jedoch einen, wird der CMEK aus dem Masterimage vorab ausgewählt.
- Geben Sie auf der Seite Versionsbeschreibung eine Beschreibung für die erstellte anfängliche Imageversion ein.
- Überprüfen Sie auf der Seite Zusammenfassung die Details der Imagestruktur und der erstellten anfänglichen Imageversion. Geben Sie einen Namen und eine Beschreibung für die Imagestruktur ein. Klicken Sie auf Fertig stellen.
Imageversionen erstellen
Imageversionen ermöglichen die Verwaltung verschiedener Iterationen oder Updates eines bestimmten Images. Diese Funktionalität ermöglicht es Ihnen, mehrere Versionen eines Images für verschiedene Zwecke zu verwalten.
Gehen Sie wie folgt vor, um Imageversionen aus der anfänglichen Imageversion zu erstellen:
Hinweis:
Die Hosting-Einheit aller Imageversionen muss identisch sein.
- Navigieren Sie zum Knoten Images, wählen Sie eine Imageversion oder eine Imagestruktur aus und klicken Sie auf Imageversion erstellen.
- Auf der Seite Imagestruktur können Sie die Hosting-Einheit ändern und das Masterimage sowie das Maschinenprofil für diese Imageversion neu auswählen.
- Wenn die Konfiguration der Imageversion von der anfänglich konfigurierten Imageversion abweichen soll, konfigurieren Sie die Einstellungen auf den Seiten Speicher- und Lizenztypen, Maschinenspezifikation, NICs und Datenträgereinstellungen des Dialogfelds Imageversion erstellen.
- Fügen Sie eine Beschreibung für die Imageversion hinzu. Klicken Sie auf Fertig stellen.

Hinweis:
Wenn die Erstellung der Imageversion aus irgendeinem Grund fehlschlägt, bietet die Registerkarte Problembehandlung unten eine Option zum Wiederholen.
Vorbereitetes Image freigeben
Gehen Sie wie folgt vor, um vorbereitete Images über verschiedene Hosting-Einheiten für Azure hinweg freizugeben:
- Klicken Sie mit der rechten Maustaste auf eine Imageversion und wählen Sie Imagefreigabe verwalten. Alle Hosting-Einheiten in Ihrer Azure-Umgebung werden angezeigt. Die Ressourcen, aus denen die Imageversion erstellt wurde, sind für Aktionen deaktiviert.
- Wählen Sie die Hosting-Einheiten aus, mit denen Sie das Image freigeben möchten, und klicken Sie auf Speichern. Die Spalte Freigabestatus zeigt In Bearbeitung an.
- Klicken Sie auf die Registerkarte Ressourcen, um weitere Details zum Freigabestatus zu erhalten.
Hinweis:
Wenn der Status der Imageversionsfreigabe In Bearbeitung ist, sind die Optionen Imageversion löschen oder Imagefreigabe verwalten deaktiviert.
Maschinenkatalog aus dem Knoten „Bilder“ erstellen
Verwenden Sie die Option Katalog erstellen im Knoten Bilder, um einen Katalog mithilfe der Imageversion zu erstellen.
Alternativ können Sie die Version beim Erstellen eines Katalogs im Knoten Maschinenkataloge auswählen, wobei Sie auf die Option für vorbereitete Images im Workflow zur Katalogerstellung verweisen. Siehe Maschinenkatalog aus dem Knoten „Maschinenkataloge“ erstellen
Gehen Sie wie folgt vor, um einen MCS-Maschinenkatalog aus dem Knoten Bilder zu erstellen:
- Wählen Sie eine Imageversion aus, und klicken Sie auf Katalog erstellen. Klicken Sie auf der Seite Einführung auf Weiter.
- Wählen Sie auf der Seite Desktop-Erfahrung die gewünschte Desktop-Erfahrung aus.
- Von der Seite Image bis zur Seite Datenträgereinstellungen sind die Einstellungen basierend auf der ausgewählten Imageversion vorausgewählt.
- Auf der Seite Ressourcengruppe können Sie eine neue Ressourcengruppe erstellen oder eine vorhandene Ressourcengruppe verwenden, um die Ressourcen dieses Katalogs zu platzieren.
- Schließen Sie die Einstellungen auf den folgenden Seiten ab.
- Überprüfen Sie auf der Seite Zusammenfassung die Details des Maschinenkatalogs. Geben Sie einen Namen und eine Beschreibung für den Maschinenkatalog ein. Klicken Sie auf Fertig stellen.
- Gehen Sie zum Knoten Maschinenkataloge, um den erstellten Maschinenkatalog anzuzeigen.
Maschinenkatalog aus dem Knoten „Maschinenkataloge“ erstellen
Gehen Sie wie folgt vor, um einen MCS-Maschinenkatalog aus dem Knoten Maschinenkataloge zu erstellen:
- 1. Klicken Sie im linken Navigationsbereich auf **Maschinenkataloge**.
- 1. Klicken Sie auf **Maschinenkatalog erstellen**. Die Seite **Maschinenkatalog-Setup** wird angezeigt. Klicken Sie auf den Seiten **Einführung** und **Maschinentyp** auf **Weiter**.
- Wählen Sie auf der Seite Maschinenverwaltung die folgenden Einstellungen aus:
-
- Wählen Sie Maschinen, die energieverwaltet sind (z. B. virtuelle Maschinen oder Blade-PCs) aus.
- Wählen Sie Citrix Provisioning-Technologie aus. Wählen Sie dann Citrix Machine Creation Services™ aus.
- Im Feld Ressourcen werden die Ressourcen verschiedener Zonen aufgelistet. Wählen Sie eine beliebige Azure-Netzwerkressource aus, und klicken Sie auf Weiter.
- Wählen Sie Maschinen, die energieverwaltet sind (z. B. virtuelle Maschinen oder Blade-PCs) aus.
-
-
Auf der Seite Image:
Gehen Sie für den Imagetyp „Vorbereitetes Image“ wie folgt vor:
- Wählen Sie Vorbereitetes Image aus.
- Wählen Sie unter Vorbereitetes Image eine Imageversion einer Imagedefinition aus. Fügen Sie bei Bedarf eine Notiz für die ausgewählte vorbereitete Imageversion hinzu.
- Klicken Sie auf den Namen der Imageversion. Um weitere Details zur ausgewählten Imageversion anzuzeigen, klicken Sie auf die Versionsnummer, die unterstrichen ist.
-
- Wenn die ausgewählte Imageversion mit einem Maschinenprofil konfiguriert ist, wählen Sie ein Maschinenprofil aus. Wenn die ausgewählte Imageversion nicht mit einem Maschinenprofil konfiguriert ist, können Sie kein Maschinenprofil verwenden.
-
- Konfigurieren Sie die Einstellungen auf den folgenden Seiten.
- Wenn auf der Seite Datenträgereinstellungen das ausgewählte vorbereitete Image einen Datenträgerverschlüsselungssatz verwendet, können Sie den Verschlüsselungssatz nicht entfernen, aber den Schlüssel in einen anderen Verschlüsselungsschlüssel ändern.
- Auf der Seite Ressourcengruppe können Sie eine neue Ressourcengruppe erstellen oder eine vorhandene Ressourcengruppe verwenden, um die Ressourcen dieses Katalogs zu platzieren.
- Schließen Sie die Einstellungen auf den folgenden Seiten ab.
- Überprüfen Sie auf der Seite Zusammenfassung die Details des Maschinenkatalogs. Geben Sie einen Namen und eine Beschreibung für den Maschinenkatalog ein. Klicken Sie auf Fertig stellen.
PowerShell verwenden
Vorbereitetes Image erstellen
Die detaillierten PowerShell-Befehle zum Erstellen einer Spezifikation für eine vorbereitete Imageversion lauten wie folgt:
-
Überprüfen Sie die verfügbaren Imagedefinitionsnamen mit dem Befehl
Test-ProvImageDefinitionNameAvailable. Beispiel:Test-ProvImageDefinitionNameAvailable -ImageDefinitionName <string[]> <!--NeedCopy-->-
- Erstellen Sie eine Imagedefinition mit dem Befehl
New-ProvImageDefinition. Beispiel:
- Erstellen Sie eine Imagedefinition mit dem Befehl
New-ProvImageDefinition -ImageDefinitionName image1 -OsType Windows -VdaSessionSupport MultiSession <!--NeedCopy--> -
-
Erstellen Sie eine neue Konfiguration für die Imagedefinition in der angegebenen Hosting-Verbindung mit dem Befehl
Add-ProvImageDefinitionConnection.Die
CustomPropertiesfürAdd-ProvImageDefinitionConnectionkönnen Folgendes enthalten. Wenn Sie die Parameter nicht verwenden, werden Standardwerte verwendet.-
ResourceGroups: Die Ressourcengruppe, die die Basisdatenträger enthält. -
UseSharedImageGallery: Indikator für den Typ der Basisdatenträger. Verwenden Sietruefür ACG (Image-Freigabe) undfalsefür Snapshot. -
ImageGallery: Der Galeriename, wenn der Basisdatenträger eine ACG-Imageversion ist.
Beispiel:
-
Im Falle eines Snapshots und einer vom Kunden bereitgestellten Ressourcengruppe:
$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--> -
Im Falle von ACG und einer vom Kunden bereitgestellten Ressourcengruppe und Image-Galerie:
$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-->