连接到微软 Azure
创建和管理连接和资源 介绍了用于创建连接的向导。以下信息涵盖了 Azure Resource Manager 云环境特有的详细信息。
注意:
在创建到微软 Azure 的连接之前,您必须先将 Azure 帐户设置为资源位置。请参阅 微软 Azure 资源管理器云环境。
创建服务主体并建立连接
在创建连接之前,必须设置连接用于访问 Azure 资源的服务主体。可以通过两种方式创建连接:
- 使用 Web Studio 同时创建服务主体和连接
- 使用先前已创建的服务主体来创建连接
本部分向您展示如何完成以下任务:
注意事项
- Citrix® 建议使用具有参与者角色的服务主体。但是,请参阅最低权限 部分以获取最低权限列表。
- 首次创建连接时,Azure 会提示您授予必要的权限。对于将来的连接,您仍然需要进行身份验证,但 Azure 会记住您之前的同意,并且不会再次显示提示。
- 用于身份验证的帐户必须具有使用 Azure RBAC 在订阅中分配角色的权限。例如,订阅的“所有者”、“基于角色的访问控制管理员”或“用户访问管理员”。
- 用于身份验证的帐户必须是订阅目录的成员。需要注意两种类型的帐户:“工作或学校”帐户和“个人 Microsoft 帐户”。有关详细信息,请参阅 CTX219211。
-
虽然您可以通过将现有 Microsoft 帐户添加为订阅目录的成员来使用它,但如果用户之前被授予对目录某个资源的来宾访问权限,则可能会出现复杂情况。在这种情况下,他们可能在目录中有一个占位符条目,该条目未授予他们必要的权限,并且会返回错误。
通过从目录中删除资源并将其显式添加回来来纠正此问题。但是,请谨慎使用此选项,因为它会对帐户可以访问的其他资源产生意外影响。
- 存在一个已知问题,即某些帐户在实际上是成员时被检测为目录来宾。此类配置通常发生在较旧的已建立目录帐户中。解决方法:将帐户添加到目录,该帐户将采用正确的成员资格值。
- 资源组只是资源的容器,它们可以包含来自其自身区域以外的区域的资源。如果您期望资源组区域中显示的资源可用,这可能会造成混淆。
- 确保您的网络和子网足够大,可以容纳您所需的计算机数量。这需要一些远见,但 Microsoft 会帮助您指定正确的值,并提供有关地址空间容量的指导。
使用 Web Studio 创建服务主体和连接
重要提示:
此功能尚不适用于 Azure 中国订阅。
使用 Web Studio,您可以在单个工作流中同时创建服务主体和连接。服务主体授予连接访问 Azure 资源的权限。当您向 Azure 进行身份验证以创建服务主体时,Azure 中会注册一个应用程序。为注册的应用程序创建一个密钥(称为客户端密钥或应用程序密钥)。注册的应用程序(在本例中为连接)使用客户端密钥向 Microsoft Entra ID 进行身份验证。
开始之前,请确保您已满足以下先决条件:
- 您的订阅的 Microsoft Entra 租户中有一个用户帐户。
- 用于身份验证的帐户必须具有使用 Azure RBAC 在订阅中分配角色的权限。例如,订阅的“所有者”、“基于角色的访问控制管理员”或“用户访问管理员”。
- 您拥有用于身份验证的全局管理员、应用程序管理员或应用程序开发人员权限。创建主机连接后,可以撤销这些权限。有关角色的更多信息,请参阅 Microsoft Entra 内置角色。
使用添加连接和资源向导一起创建服务主体和连接:
- 在连接页面上,选择创建新连接、Microsoft Azure连接类型和您的 Azure 环境。
- 选择用于创建虚拟机的工具,然后选择下一步。
-
在连接详细信息页面上,输入您的 Azure 订阅 ID 和连接名称。输入订阅 ID 后,创建新按钮将启用。
注意:
连接名称可以包含 1–64 个字符,不能只包含空格或字符
\/;:#.*?=<>|[]{}"'()'。 - 选择创建新,然后输入 Microsoft Entra 帐户用户名和密码。
- 选择登录。
- Select Accept to give Citrix Virtual Apps and Desktops™ the listed permissions. Citrix Virtual Apps and Desktops creates a service principal that allows it to manage Azure resources on behalf of the specified user.
-
选择接受后,您将返回向导中的连接页面。
注意:
成功向 Azure 进行身份验证后,创建新和使用现有按钮将消失。连接成功文本将显示,并带有一个绿色复选标记,表示已成功连接到您的 Azure 订阅。
-
在连接详细信息页面上,选择下一步。
注意:
您必须成功通过 Azure 身份验证并同意授予所需权限后,才能继续访问下一页。
-
配置连接所需的资源。这些资源包括区域和网络。
- 在区域页面上,选择一个区域。
- 在网络页面上,执行以下操作:
- 键入一个 1–64 个字符的资源名称,以帮助识别区域和网络组合。资源名称不能只包含空格,也不能包含字符
\/;:#.*?=<>|[]{}"'()'。 - 选择一个虚拟网络/资源组对。(如果您有多个同名虚拟网络,将网络名称与资源组配对可提供唯一的组合。)如果您在上一页选择的区域没有任何虚拟网络,请返回该页面并选择一个具有虚拟网络的区域。
- 键入一个 1–64 个字符的资源名称,以帮助识别区域和网络组合。资源名称不能只包含空格,也不能包含字符
- 在摘要页面上,查看设置摘要并选择完成以完成设置。
查看应用程序 ID
创建连接后,您可以查看该连接用于访问 Azure 资源的应用程序 ID。
在添加连接和资源列表中,选择连接以查看详细信息。详细信息选项卡显示应用程序 ID。
使用 PowerShell 创建服务主体
To create a service principal using PowerShell, connect to your Azure Resource Manager subscription and use the PowerShell cmdlets provided in the following sections.
请确保您已准备好以下各项:
-
订阅 ID: 用于预配 VDA 的订阅的 Azure 资源管理器
SubscriptionID。 - 活动目录 ID: 您在 Microsoft Entra ID 中注册的应用程序的租户 ID。
- 应用程序名称:在 Microsoft Entra ID 中创建的应用程序的名称。
详细的步骤如下所示:
-
连接到您的 Azure 资源管理器 订阅。
Connect-AzAccount -
选择要在其中创建服务主体的 Azure Resource Manager 订阅。
Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription -
在您的 AD 租户中创建应用程序。
$AzureADApplication = New-AzADApplication -DisplayName $ApplicationName -
创建服务主体。
New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId -
为服务主体分配角色。
New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $AzureADApplication.AppId –scope /subscriptions/$SubscriptionId -
从 PowerShell 控制台的输出窗口中,记下 ApplicationId。在创建主机连接时提供该 ID。
在 Azure 中获取应用程序机密
要使用现有服务主体创建连接,您必须首先在 Azure 门户中获取服务主体的应用程序 ID 和机密。
具体步骤如下所示:
- Get the Application ID from the Web Studio or using PowerShell.
- 登录 Azure 门户。
- In Azure, select Microsoft Entra ID.
- 在 Microsoft Entra ID 的 应用注册 中,选择您的应用程序。
- 转到 证书和机密。
- 单击 客户端机密。
如何使用现有服务主体创建连接
如果您已有服务主体,可以使用它通过 Web Studio 创建连接。
确保您已准备好以下各项:
- 订阅 ID
- 活动目录 ID(租户 ID)
- 应用程序 ID
-
应用程序机密
有关详细信息,请参阅 获取应用程序机密。
- 密钥过期日期
详细的步骤如下所示:
在“添加连接和资源”向导中:
-
在“连接”页面上,选择“创建新连接”、“Microsoft Azure”连接类型和您的 Azure 环境。
-
选择用于创建虚拟机的工具,然后选择“下一步”。
-
在“连接详细信息”页面上,输入您的 Azure 订阅 ID 和连接名称。
注意:
连接名称可以包含 1–64 个字符,不能只包含空格,也不能包含字符
\/;:#.*?=<>|[]{}"'()'。 -
选择“使用现有”。在“现有服务主体详细信息”窗口中,输入现有服务主体的以下设置。输入详细信息后,“保存”按钮将启用。选择“保存”。在提供有效详细信息之前,您无法继续操作。
- 订阅 ID。输入您的 Azure 订阅 ID。要获取您的订阅 ID,请登录 Azure 门户并导航到“订阅 > 概述”。
- Active Directory ID(租户 ID)。输入您在 Azure AD 中注册的应用程序的目录(租户)ID。
- 应用程序 ID。输入您在 Azure AD 中注册的应用程序的应用程序(客户端)ID。
- 应用程序密钥。创建密钥(客户端密钥)。注册的应用程序使用该密钥向 Azure AD 进行身份验证。我们建议您定期更改密钥以确保安全。请务必保存密钥,因为以后无法检索该密钥。
-
密钥过期日期。输入应用程序密钥的过期日期。在密钥过期前 14 天,您会在“托管”节点中的特定主机连接上看到一个警告图标。但是,如果密钥过期,您将收到错误。
注意:
出于安全目的,过期期限不能超过从现在算起的两年。
- 身份验证 URL。此字段自动填充且不可编辑。
- 管理 URL。此字段自动填充且不可编辑。
- 存储后缀。此字段自动填充且不可编辑。
- 用于上传或下载磁盘或快照的 Azure Blob 存储端点。此字段自动填充且不可编辑。
- Key Vault 服务。此字段自动填充且不可编辑。
-
服务总线后缀。此字段自动填充且不可编辑。
在 Azure 中创建 MCS 目录需要访问以下端点。访问这些端点可优化您的网络与 Azure 门户及其服务之间的连接。
- 身份验证 URL:
https://login.microsoftonline.com - 管理 URL:
https://management.azure.com。这是 Azure 资源管理器提供程序 API 的请求 URL。管理的终结点取决于环境。例如,对于 Azure 全球版,它是https://management.azure.com,对于 Azure 美国政府版,它是https://management.usgovcloudapi.net。 - 存储后缀:
https://*.core.windows.net。此 (*) 是存储后缀的通配符。例如,https://demo.table.core.windows.net。 - 用于上传或下载磁盘或快照的 Azure Blob 存储端点:
https://*.storage.azure.net。此 (*) 是 Blob 存储导入和导出操作的通配符。例如,https://md-impexp-xxxxx.z[00-50].blob.storage.azure.net。 - Key Vault 服务:
https://*.vault.azure.net。此 (*) 是 Key Vault 名称的通配符。例如,https://<your-key-vault-name>.vault.azure.net。 - 服务总线后缀:
https://*.servicebus.windows.net。此 (*) 是在全局 Azure 云中创建的命名空间的通配符。例如,https://{serviceNamespace}.servicebus.windows.net/{path}。
- 身份验证 URL:
- 选择“保存”后,您将返回到“连接详细信息”页面。选择“下一步”以继续到下一页。
-
为该连接配置所需的资源。这些资源包括区域和网络两部分。
- 在“区域”页面上,选择一个区域。
- 在“网络”页面上,执行以下操作:
- 键入一个 1-64 个字符的资源名称,以帮助识别区域和网络组合。资源名称不能只包含空格,也不能包含字符
\/;:#.*?=<>|[]{}"'()'。 - 选择一个虚拟网络/资源组对。(如果存在多个同名虚拟网络,将网络名称与资源组配对可提供唯一组合。)如果您在上一页选择的区域没有任何虚拟网络,请返回该页面并选择一个具有虚拟网络的区域。
- 键入一个 1-64 个字符的资源名称,以帮助识别区域和网络组合。资源名称不能只包含空格,也不能包含字符
- 在“摘要”页面上,查看设置摘要,然后选择“完成”以完成设置。
管理服务主体和连接配置
本节详细介绍了如何管理服务主体和连接:
配置 Azure 限制设置
Azure Resource Manager 会限制对订阅和租户的请求,根据定义的限制路由流量,并根据提供商的特定需求进行调整。有关详细信息,请参阅 Microsoft 网站上的限制 Resource Manager 请求。订阅和租户存在限制,管理大量计算机可能会出现问题。例如,包含大量计算机的订阅可能会遇到与电源操作相关的性能问题。
提示:
如需了解关于此主题的更多详细信息,请参阅以下文章:通过 Machine Creation Services 提高 Azure 性能。
为帮助缓解这些问题,您可以移除 MCS 内部限制,以使用 Azure 提供的更多可用请求配额。
在大型订阅(例如,包含 1,000 个虚拟机的订阅)中打开或关闭虚拟机电源时,我们建议采用以下最佳设置:
- 绝对同时操作数:500
- 每分钟最大新操作数:2000
- 最大并发操作数:500
您可以使用 Web Studio 来配置针对特定 Azure 连接的 Azure 操作:
- 在 Web Studio 中,在左侧窗格中选择 托管。
- 选择该连接。
- 在编辑连接向导中,选择高级。
- 在高级页面上,使用配置选项指定同时操作数和每分钟最大新操作数,以及任何其他连接选项。

MCS 默认支持 500 个最大并发操作。或者,您可以使用远程 PowerShell SDK 设置最大并发操作数。
使用 PowerShell 属性 MaximumConcurrentProvisioningOperations 指定最大并发 Azure 预配操作数。使用此属性时,请考虑:
-
MaximumConcurrentProvisioningOperations的默认值为 500。 - 使用 PowerShell 命令
Set-item配置MaximumConcurrentProvisioningOperations参数。
在 Azure 中启用映像共享
创建或更新计算机目录时,您可以从不同的 Azure 租户和订阅中选择共享映像(通过 Azure 计算库共享)。要在租户内部或跨租户启用映像共享,您必须在 Azure 中进行必要的设置:
在租户内共享映像(跨订阅)
要在 Azure 计算库中选择属于不同订阅的映像,必须与该订阅的服务主体 (SPN) 共享该映像。
例如,如果存在一个服务主体 (SPN 1),其在 Studio 中的配置如下:
服务主体: SPN 1
订阅: 订阅 1
租户: 租户 1
映像位于不同的订阅中,其在 Studio 中的配置如下:
订阅: 订阅 2
租户: 租户 1
如果您想将订阅 2 中的映像与订阅 1 (SPN 1) 共享,请转到订阅 2,并将资源组与 SPN1 共享。
必须使用 Azure 基于角色的访问控制 (RBAC) 与另一个 SPN 共享映像。Azure RBAC 是用于管理对 Azure 资源的访问的授权系统。有关 Azure RBAC 的更多信息,请参阅 Microsoft 文档 什么是 Azure 基于角色的访问控制 (Azure RBAC)。要授予访问权限,您需要将“参与者”角色分配给资源组范围内的服务主体。要分配 Azure 角色,您必须具有 Microsoft.Authorization/roleAssignments/write 权限,例如“用户访问管理员”或“所有者”。有关与另一个 SPN 共享映像的更多信息,请参阅 Microsoft 文档 使用 Azure 门户分配 Azure 角色。
有关使用 PowerShell 命令从不同订阅中选择映像的信息,请参阅 从不同订阅中选择映像。
跨租户共享映像
要使用 Azure 计算库跨租户共享映像,请创建应用程序注册。
例如,如果有两个租户(租户 1 和租户 2),并且您想与租户 1 共享您的映像库,则:
-
为租户 1 创建应用程序注册。有关更多信息,请参阅 创建应用程序注册。
-
通过使用浏览器请求登录,授予租户 2 对应用程序的访问权限。将
Tenant2 ID替换为租户 1 的租户 ID。将Application (client) ID替换为您创建的应用程序注册的应用程序 ID。完成替换后,将 URL 粘贴到浏览器中,并按照登录提示登录到租户 2。例如:https://login.microsoftonline.com/<Tenant 2 ID>/oauth2/authorize?client_id=<Application (client) ID>&response_type=code&redirect_uri=https%3A%2F%2Fwww.microsoft.com%2F <!--NeedCopy-->有关更多信息,请参阅 授予租户 2 访问权限。
-
授予应用程序对租户 2 资源组的访问权限。以租户 2 身份登录,并授予应用程序注册对包含库映像的资源组的访问权限。有关更多信息,请参阅 跨租户验证请求。
要使用 PowerShell 命令从不同租户的映像创建目录:
使用 Web Studio 将共享租户添加到连接
在 Web Studio 中创建或更新计算机目录时,您可以从不同的 Azure 租户和订阅中选择共享映像(通过 Azure 计算库共享)。此功能要求您为关联的主机连接提供共享租户和订阅信息。
注意:
确保您已在 Azure 中配置了必要的设置,以启用跨租户的映像共享。有关详细信息,请参阅 跨租户共享映像。
请按照以下步骤完成连接:
- 在 Web Studio 中,选择左侧窗格中的托管。
-
选择连接,然后在操作栏中选择编辑连接。

-
在共享租户中,执行以下操作:
- 提供与连接订阅关联的应用程序 ID 和应用程序密钥。Citrix Virtual Apps™ and Desktops 使用此信息向 Microsoft Entra ID 进行身份验证。
- 添加与连接订阅共享 Azure Compute Gallery 的租户和订阅。每个租户最多可以添加 8 个共享租户和 8 个订阅。
- 完成后,选择应用以应用所做的更改并保持窗口打开,或者选择确定以应用更改并关闭窗口。
使用 PowerShell 实现映像共享
本节将指导您完成使用 PowerShell 共享映像的过程:
从不同的订阅中选择一个映像
您可以选择属于同一 Azure 租户中不同共享订阅的 Azure 计算库中的映像,以使用 PowerShell 命令创建和更新 MCS 目录。
- 在托管单元根文件夹中,Citrix 会创建一个名为
sharedsubscription的新共享订阅文件夹。 -
列出租户中的所有共享订阅。
Get-ChildItem -Path "XDhyp:\HostingUnits\azres\sharedsubscription.folder" <!--NeedCopy--> -
选择一个共享订阅,然后列出该共享订阅的所有共享资源组。
Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription" <!--NeedCopy--> -
选择一个资源组,然后列出该资源组的所有库。
Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup" <!--NeedCopy--> -
选择一个库,然后列出该库的所有映像定义。
Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\testgallery.gallery" <!--NeedCopy--> -
选择一个映像定义,然后列出该映像定义的所有映像版本。
Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\sigtestdef.imagedefinition" <!--NeedCopy--> -
使用以下元素创建和更新 MCS 目录:
- 资源群组
- 库
- 图库映像定义
- 图库映像版本
有关如何使用远程 PowerShell SDK 创建目录的信息,请参阅 https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/。
使用共享租户 ID 更新托管连接自定义属性
使用 Set-Item 更新托管连接的自定义属性,其中包含共享租户 ID 和订阅 ID。在 CustomProperties 中添加属性 SharedTenants。Shared Tenants 的格式为:
[{"Tenant":"94367291-119e-457c-bc10-25337231f7bd","Subscriptions":["7bb42f40-8d7f-4230-a920-be2781f6d5d9"]},{"Tenant":"50e83564-c4e5-4209-b43d-815c45659564","Subscriptions":["06ab8944-6a88-47ee-a975-43dd491a37d0"]}]
<!--NeedCopy-->
例如:
Set-Item -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`">
<Property xsi:type=`"StringProperty`" Name=`"SubscriptionId`" Value=`"123`" />
<Property xsi:type=`"StringProperty`" Name=`"ManagementEndpoint`" Value=`"https://management.azure.com/`" />
<Property xsi:type=`"StringProperty`" Name=`"AuthenticationAuthority`" Value=`"https://login.microsoftonline.com/`" />
<Property xsi:type=`"StringProperty`" Name=`"StorageSuffix`" Value=`"core.windows.net`" />
<Property xsi:type=`"StringProperty`" Name=`"TenantId`" Value=`"123abc`" />
<Property xsi:type=`"StringProperty`" Name=`"SharedTenants`" Value=`"`[ { 'Tenant':'123abc', 'Subscriptions':['345', '567'] } ]`"` />
</CustomProperties>"
-LiteralPath @("XDHyp:\Connections\aazure") -PassThru -UserName "advc345" -SecurePassword
$psd
<!--NeedCopy-->
注意:
您可以添加多个租户。每个租户可以有多个订阅。
从不同的租户选择镜像
您可以选择属于其他 Azure 租户的 Azure 计算库中的映像,以使用 PowerShell 命令创建和更新 MCS 目录。
- 在托管单元根文件夹中,Citrix 会创建一个名为
sharedsubscription的新共享订阅文件夹。 -
列出所有共享订阅。
Get-ChildItem XDHyp:\HostingUnits\azres\sharedsubscription.folder <!--NeedCopy--> -
选择一个共享订阅,然后列出该共享订阅的所有共享资源组。
Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription <!--NeedCopy--> -
选择一个资源组,然后列出该资源组的所有库。
Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup <!--NeedCopy--> -
选择一个库,然后列出该库的所有映像定义。
Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery <!--NeedCopy--> -
选择一个映像定义,然后列出该映像定义的所有映像版本。
Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery\hij.imagedefinition <!--NeedCopy--> -
使用以下元素创建和更新 MCS 目录:
- 资源群组
- 库
- 图库映像定义
- 图库映像版本
有关如何使用远程 PowerShell SDK 创建目录的信息,请参阅 https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/。
管理应用程序密钥和密钥过期日期
请务必在密钥过期之前更改连接的应用程序密钥。在密钥过期前 14 天,您会在“托管”节点中的特定主机连接上看到一个警告图标。但是,如果密钥过期,您将收到错误。
在 Azure 中创建应用程序密钥
您可以通过 Azure 门户为连接创建应用程序密钥。
- Select Microsoft Entra ID.
- 在 Microsoft Entra ID 的“应用注册”中,选择您的应用程序。
- 转到“证书和密钥”。
- 单击“客户端密钥 > 新建客户端密钥”。
-
提供密钥的描述并指定持续时间。完成后,选择“添加”。
注意:
请务必保存客户端密钥,因为以后无法检索它。
- 复制客户端密钥值和过期日期。
- 在 Web Studio 中,编辑相应的连接,并将“应用程序密钥”和“密钥过期日期”字段中的内容替换为您复制的值。
修改密钥的过期日期
您可以使用 Web Studio 添加或修改正在使用的应用程序密钥的过期日期。
注意:
在密钥过期前 14 天开始,您会在“托管”节点中特定的主机连接上看到一个警告图标。
- 在“添加连接和资源”向导中,右键单击一个连接,然后单击“编辑连接”。
- 在“连接属性”页面上,单击“密钥过期日期”以添加或修改正在使用的应用程序密钥的过期日期。
使用预创建的网络安全组
为映像准备创建一个“全部拒绝”网络安全组,而不是请求 Citrix 创建和修改 NSG。使用 PowerShell 命令 Set-Item 编辑托管单元的自定义属性,以包含参数 NsgForPreparation 来提供“全部拒绝”网络安全组。
先决条件
请配置服务主体正常运行所需的以下权限:
-
Microsoft.Network/networkSecurityGroups/join/action:将网络安全组关联到子网或网络接口 -
Microsoft.Network/networkSecurityGroups/read:获取网络安全组 -
Microsoft.Network/networkSecurityGroups/securityRules/read:获取规则
添加预创建的“全部拒绝”网络安全组
要添加预创建的 Deny-All 网络安全组,请在托管单元上按如下方式设置自定义属性:
- 使用远程 PowerShell 软件开发工具包打开 PowerShell 窗口。
-
运行以下命令:
Add-PSSnapin citrix*. cd XDHyp:\HostingUnits\ Dir <!--NeedCopy--> -
选择一个托管单元以检索详细信息:
Get-Item "XDHyp:\HostingUnits\<hostingunitname>" <!--NeedCopy--> -
将自定义属性复制到记事本,并附加属性设置
<Property xsi:type="StringProperty” Name="NsgForPreparation” Value="{ResourceGroupName}/{NetworkSecurityGroupName}"/>。例如:<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"NsgForPreparation`" Value=`{ResourceGroupName}/{NetworkSecurityGroupName}`"/></CustomProperties> <!--NeedCopy--> -
在 PowerShell 窗口中,将变量分配给修改后的自定义属性。例如:
$customProperty = "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"NsgForPreparation`" Value=`"{ResourceGroupName}/{NetworkSecurityGroupName}`"/></CustomProperties>" <!--NeedCopy--> - 运行
$cred = Get-Credential。如果出现提示,请提供连接凭据。凭据是 Azure 应用程序 ID 和密钥。 -
运行以下命令。
Set-Item -PSPath XDHyp:\HostingUnits\<hostingunitname> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.password <!--NeedCopy-->重要提示:
如果收到提示 SubscriptionId 缺失的消息,请将自定义属性中的所有双引号 (“) 替换为反引号后跟双引号 (`”)。
- 运行
dir以验证更新的CustomProperties设置。
注意:
更新需要一分钟以上才能生效。
检索网络安全组详细信息
为了获取网络安全组的详细信息,首先,您需要检索包含该网络安全组的资源组,然后,根据资源组的名称来检索具体的网络安全组。
-
获取包含网络安全组的资源组列表。例如:
Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["networksecuritygroup"]}' <!--NeedCopy--> -
根据资源组名称,获取相应的网络安全组。例如:
Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType securitygroup -MaxRecords 5 -AdditionalDataFilter '{"location": ["eastus", "westus"], "resourcegroup":["resourcegroupname"]}' <!--NeedCopy-->
筛选空的资源组
在创建计算机目录时,使用 PowerShell 命令 Get-HypInventoryItem 筛选空资源组,同时选择主映像、计算机配置文件或准备好的映像。
示例:
-
检索页面中的最大记录数:
Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 <!--NeedCopy--> -
检索页面中的最大记录数,并筛选以查找包含特定资源的资源容器。
Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}' <!--NeedCopy--> -
通过跳过直接指示页面进行检索,并筛选以查找包含特定资源的资源容器。
Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -skip 20 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}' <!--NeedCopy--> -
使用令牌检索下一页,并筛选以查找包含特定资源的资源容器。
Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}' -ContinuationToken 'ew0KICAiJGlkIjogIjEiLA0KICAiTWF4Um93cyI6IDUsDQogICJSb3dzVG9Ta2lwIjogMjUsDQogICJLdXN0b0NsdXN0ZXJVcmwiOiAiaHR0cHM6Ly9hcmctbmV1LTEzLXNmLmFyZy5jb3JlLndpbmRvd3MubmV0Ig0KfQ==' <!--NeedCopy--> -
检索所有带有 Citrix 内部标签的资源组,并使用
MaxRecords限制最大记录数。Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 <!--NeedCopy--> -
筛选带有 Citrix 内部标签的计算机配置文件(主映像),并使用
MaxRecords限制最大记录数。Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}' <!--NeedCopy--> -
筛选带有 Citrix 内部标签的准备好的映像,并使用
MaxRecords限制最大记录数。Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion"]}' <!--NeedCopy--> -
筛选带有 Citrix 内部标签的计算机配置文件(准备好的映像),并使用
MaxRecords限制最大记录数。Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}' <!--NeedCopy--> -
筛选带有 Citrix 内部标签的映像,并使用
MaxRecords和位置限制最大记录数。Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"], "location": ["eastus", "westus"]}' <!--NeedCopy--> -
检索所有资源组,不考虑标签
CitrixResource。Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 50 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"]}' -Force $true <!--NeedCopy-->
连接到微软云主权气隙云环境
Azure Sovereign Airgap 云环境适用于必须位于隔离网络域中的绝密工作负载。您可以在创建主机连接时使用自定义属性 DisableInstanceDiscovery 连接到 Azure Sovereign Airgap 云环境。
<Property xsi:type="StringProperty" Name="DisableInstanceDiscovery" Value="true" />
<!--NeedCopy-->
有关创建微软云主机连接的更多信息,请参阅 Create-HostingConnection.ps1。
所需的 Azure 权限
本节包含 Azure 所需的最低和一般权限。
最低所需权限
最低权限可提供更好的安全控制。但是,由于只使用了最低权限,需要额外权限的新功能会失败。
创建主机连接操作
使用从 Azure 获取的信息添加新的主机连接。
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/disks/read",
"Microsoft.Resources/providers/read",
"Microsoft.Resources/subscriptions/locations/read",
"Microsoft.Resources/tenants/read",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/securityRules/read"
<!--NeedCopy-->
虚拟机电源管理
启动或关闭计算机实例。
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Insights/diagnosticsettings/delete",
"Microsoft.Insights/diagnosticsettings/read",
"Microsoft.Insights/diagnosticsettings/write",
<!--NeedCopy-->
创建、更新或删除虚拟机
创建计算机目录,然后添加、删除、更新计算机,并删除计算机目录。
以下是当主映像为托管磁盘,或者快照与托管连接位于同一区域时,所必须具备的最低权限列表。
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/locations/publishers/artifacttypes/types/versions/read",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/extensions/read",
"Microsoft.Compute/virtualMachines/extensions/write",
"Microsoft.Features/providers/features/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/locations/usages/read",
"Microsoft.Compute/capacityReservationGroups/capacityReservations/read"
<!--NeedCopy-->
对于以下功能,您需要在最低权限的基础上额外授予以下权限:
-
如果主映像是位于与托管连接相同区域的存储帐户中的 VHD:
"Microsoft.Storage/storageAccounts/read", "Microsoft.Storage/storageAccounts/listKeys/action", <!--NeedCopy--> -
如果主映像是共享映像库中的 ImageVersion:
"Microsoft.Compute/galleries/read", "Microsoft.Compute/galleries/images/read", "Microsoft.Compute/galleries/images/versions/read", <!--NeedCopy--> -
如果主映像是托管磁盘,则快照或 VHD 位于与托管连接区域不同的区域:
"Microsoft.Storage/storageAccounts/read", "Microsoft.Storage/storageAccounts/listKeys/action", "Microsoft.Storage/storageAccounts/write", "Microsoft.Storage/storageAccounts/delete", "Microsoft.Storage/checknameavailability/read", "Microsoft.Storage/locations/usages/read", "Microsoft.Storage/skus/read", <!--NeedCopy--> -
如果您使用 Citrix 管理的资源组:
"Microsoft.Resources/subscriptions/resourceGroups/write", "Microsoft.Resources/subscriptions/resourceGroups/delete", <!--NeedCopy--> -
如果您将主映像放置在共享租户或订阅中的 Azure 计算库(以前称为共享映像库)中:
"Microsoft.Compute/galleries/write", "Microsoft.Compute/galleries/images/write", "Microsoft.Compute/galleries/images/versions/write", "Microsoft.Compute/galleries/read", "Microsoft.Compute/galleries/images/read", "Microsoft.Compute/galleries/images/versions/read", "Microsoft.Compute/galleries/delete", "Microsoft.Compute/galleries/images/delete", "Microsoft.Compute/galleries/images/versions/delete", "Microsoft.Resources/subscriptions/read", <!--NeedCopy--> -
如果您使用 Azure 专用主机支持:
"Microsoft.Compute/hostGroups/read", "Microsoft.Compute/hostGroups/write", "Microsoft.Compute/hostGroups/hosts/read", <!--NeedCopy--> -
如果您使用带客户管理密钥 (CMK) 的服务器端加密 (SSE):
"Microsoft.Compute/diskEncryptionSets/read", <!--NeedCopy--> -
如果您使用 ARM 模板(计算机配置文件)部署 VM:
"Microsoft.Resources/deployments/write", "Microsoft.Resources/deployments/operationstatuses/read", "Microsoft.Resources/deployments/read", "Microsoft.Resources/deployments/delete", "Microsoft.Insights/DataCollectionRuleAssociations/Read", "Microsoft.Insights/dataCollectionRules/read", <!--NeedCopy--> -
如果您使用 Azure 模板规范作为计算机配置文件:
"Microsoft.Resources/templateSpecs/read", "Microsoft.Resources/templateSpecs/versions/read", <!--NeedCopy-->
使用非托管磁盘创建、更新和删除计算机
以下是主映像为 VHD 且使用管理员提供的资源组时所需的最低权限列表:
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/locations/usages/read",
"Microsoft.Storage/skus/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/locations/usages/read",
<!--NeedCopy-->
成本管理
以下是检索 VM 定价所需的最低权限:
"Microsoft.Consumption/pricesheets/read"
<!--NeedCopy-->
以下是检索 VM 成本所需的最低权限:
"Microsoft.CostManagement/query/read"
<!--NeedCopy-->
注意:
要查看 Azure 计算机目录的 成本洞察 选项卡,您必须拥有 成本管理 > 管理 > 读取成本 权限(云管理员的默认权限)。有关 成本洞察 选项卡的信息,请参阅 查看目录详细信息。
一般性权限
参与者角色拥有管理所有资源的完全访问权限。这组权限不会阻止您获取新功能。
以下权限集提供了未来最佳的兼容性,尽管与当前功能集相比,它包含的权限可能多于实际所需。
"Microsoft.Compute/diskEncryptionSets/read",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/galleries/delete",
"Microsoft.Compute/galleries/images/delete",
"Microsoft.Compute/galleries/images/read",
"Microsoft.Compute/galleries/images/versions/delete",
"Microsoft.Compute/galleries/images/versions/read",
"Microsoft.Compute/galleries/images/versions/write",
"Microsoft.Compute/galleries/images/write",
"Microsoft.Compute/galleries/read",
"Microsoft.Compute/galleries/write",
"Microsoft.Compute/hostGroups/hosts/read",
"Microsoft.Compute/hostGroups/read",
"Microsoft.Compute/hostGroups/write",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/locations/publishers/artifacttypes/types/versions/read",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/extensions/read",
"Microsoft.Compute/virtualMachines/extensions/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/locations/usages/read",
"Microsoft.Resources/deployments/operationstatuses/read",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/deployments/write",
"Microsoft.Resources/deployments/delete",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
"Microsoft.Resources/providers/read",
"Microsoft.Resources/subscriptions/locations/read",
"Microsoft.Resources/subscriptions/read",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Resources/tenants/read",
"Microsoft.Resources/templateSpecs/read",
"Microsoft.Resources/templateSpecs/versions/read",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/locations/usages/read",
"Microsoft.Storage/skus/read",
"Microsoft.Features/providers/features/read",
"Microsoft.Insights/DataCollectionRuleAssociations/Read",
"Microsoft.Insights/dataCollectionRules/read",
"Microsoft.Insights/diagnosticsettings/delete",
"Microsoft.Insights/diagnosticsettings/read",
"Microsoft.Insights/diagnosticsettings/write",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/securityRules/read",
"Microsoft.Compute/capacityReservationGroups/capacityReservations/read"
<!--NeedCopy-->
在 Azure 非机密环境中验证主机连接
您可以验证主机连接上的权限,以执行与创建和管理 MCS 计算机目录相关的任务。此实现可帮助您提前找出不同场景(例如创建、删除和更新 VM、VM 的电源管理)所需的缺失权限,从而避免在关键时刻受阻。
您可以使用 PowerShell 命令 Test-HypHypervisorConnection 验证主机连接上的权限。该命令的结果将捕获为一个列表,其中列表中的每个项目都分为三个部分。
- 类别:用户可以执行的用于创建和管理 MCS 计算机目录的操作或任务。
- 纠正措施:管理员必须执行的步骤,以解决用户权限缺失的差异。
- 缺失权限:某个类别缺失权限的列表。
要验证权限,请执行以下操作:
- 创建到 Azure 的主机连接。
- 从 交付控制器™ 主机打开 PowerShell 窗口。
- 运行
asnp citrix*以加载 思杰 特定的 PowerShell 模块。 -
运行以下命令以验证您是否具有测试连接所需的权限。
Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AzureCon" <!--NeedCopy-->SPN 所需的角色级别权限:
- Microsoft.Authorization/角色定义/读取(在订阅级别或资源组级别,如果提供了资源组)
- Microsoft.Authorization/角色分配/读取(在订阅级别或资源组级别,如果提供了资源组)
SPN 所需的 API 级别权限:
Microsoft.Graph:
- 应用程序.读取.所有
- 目录.读取.所有
- 服务主体终结点.读取.所有
-
在您添加了查找自身权限所需的缺失权限后,请运行以下命令以验证您是否在各个类别中具备相应的权限。
示例:
若要在订阅级别测试连接,且需要更高级别的授权:
Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\ AzureCon -SecurePassword $password -UserName 922e65d5-38ae-4cf5-xxxx-xxxxxxxxx <!--NeedCopy-->示例:
若要在资源组级别测试连接,且无需高级别授权:
Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -CustomProperties $customProperties | Format-List <!--NeedCopy-->注意:
CustomProperties 参数用于提供资源组级别,因为资源组是连接特定信息。
示例:
要在资源组级别测试具有更高级别授权的连接:
Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -SecurePassword $password -UserName 922e65d5-38ae-4cf5-832b-54122196b7dd -CustomProperties $customProperties <!--NeedCopy-->
有关权限的信息,请参阅所需的 Azure 权限。
在 Azure 秘密环境中验证主机连接
您可以使用 PowerShell 命令 Test-HypHypervisorConnection 验证主机连接在 Azure 秘密环境中是否具有所需的权限。
但是,要成功获取验证结果,请创建或更新现有主机连接以具有自定义属性 AuthenticationObjectId。此属性存储与托管连接关联的服务主体的对象 ID。
注意:
从 Azure 门户获取服务主体的对象 ID。请勿使用应用程序的 ID。
创建或更新一个主机连接,使其包含 AuthenticationObjectId
使用 New-Item 创建主机连接并将 AuthenticationObjectId 添加为自定义属性。示例:
New-Item -ConnectionType 'Azure' -HypervisorAddress @('http://hypervisorhost1.example.com','http://hypervisorhost2.example.com')`
-LoggingId $loggingId -Path @('XDHyp:\\Connections\\Example') -Persist -Scope @() `
-Password 'Password' -UserName 'root' -CustomProperties <Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/>
<!--NeedCopy-->
使用 Set-Item 更新现有主机连接以添加 AuthenticationObjectId 作为自定义属性。执行此操作的步骤如下:
- 使用远程 PowerShell 软件开发工具包打开 PowerShell 窗口。
-
运行以下命令:
Add-PSSnapin citrix*. cd XDHyp:\Connections\ dir <!--NeedCopy--> - 将连接中的
CustomProperties复制到记事本,并将属性设置<Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/>附加到CustomProperties。 - 在 PowerShell 窗口中,将变量分配给修改后的自定义属性。
- 运行
$cred = Get-Credential。如果出现提示,请提供连接凭据。凭据是 Azure 应用程序 ID 和密钥。 - 运行
Set-Item -PSPath XDHyp:\Connections\<Connection_Name> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.password。 -
运行
dir以验证更新的CustomProperties设置。Set-Item -PSPath XDHyp:\Connections\$connName -CustomProperties <Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/> -username $cred.username -Securepassword $cred.password <!--NeedCopy-->
验证主机连接的权限是否正确
要验证主机连接是否具备所需的角色和权限,请运行以下命令:
-
如果您在订阅级别已分配了角色和权限:
Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\<Your-HostingConnection> <!--NeedCopy--> -
如果您在资源组级别分配了角色和权限:
Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\<Your-HostingConnection> -CustomProperties $CustomProperties $CustomProperties = '<CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">'` + '<Property xsi:type="StringProperty" Name="ResourceGroups" Value="ExampleResourceGroup" />'` + '</CustomProperties>' <!--NeedCopy-->
后续步骤
- 如果您处于初始部署过程中,请参阅 创建计算机目录
- 有关 Azure 特定的信息,请参阅 创建 Microsoft Azure 目录