SDK 和 API

Citrix Virtual Apps and Desktops 远程 PowerShell SDK

远程 PowerShell SDK 将自动执行复杂的重复性任务。它提供在不使用 Studio 用户界面的情况下用来设置和管理 Citrix Virtual Apps and Desktops 服务环境的机制。

此 SDK 与用于客户管理的部署的 SDK 有何不同

在由客户管理员安装和管理的 Citrix Virtual Apps and Desktops 部署中,这些管理员在一个常见域结构中同时包含 VDA 和 Delivery Controller 的站点中运行 cmdlet 和脚本。相反,Citrix Virtual Apps and Desktops 服务分别将 VDA 和 Controller 拆分到资源位置和控制平面中。此拆分意味着原始 Citrix Virtual Apps and Desktops PowerShell SDK 不在 Citrix Virtual Apps and Desktops 服务环境中运行,因为该 SDK 不能从安全的资源位置跨越到控制平面边界。

解决方案是使用 Citrix Virtual Apps and Desktops 远程 PowerShell SDK。在资源位置中运行时,远程 PowerShell SDK 会像在本地一样访问控制平面。该 SDK 提供的功能与单个 Citrix Virtual Apps and Desktops 站点相同。仅存在最低的非可见通信层,功能得以增强,可在单个本地站点或云环境中使用。cmdlet 相同,并且大多数现有脚本的工作方式保持不变。

Get-XdAuthentication cmdlet 提供从安全的资源位置跨越到控制平面边界的授权。默认情况下,Get-XdAuthentication 提示用户输入 CAS 凭据,并且必须在每个 PowerShell 会话中提供一次。或者,用户可以使用 API 访问安全客户端(在 Citrix Cloud 控制台中创建)定义身份验证配置文件。在这两种情况下,我们都会在后续的 PowerShell SDK 调用中持续使用安全信息。如果未明确运行此 cmdlet,它将被第一个 PowerShell SDK cmdlet 调用。

安装和使用远程 PowerShell SDK

要求:

  • 确保 PowerShell 3.0 或更高版本在计算机上可用。
  • SDK 安装程序会下载并安装 .NET Framework 4.8(或更高的受支持版本,如果未安装)。
  • 如果计算机已经安装了 Citrix Virtual Apps and Desktops SDK,请在安装远程 PowerShell SDK 之前删除该 SDK(从 Windows 的“程序和功能”中)。

要安装远程 PowerShell PowerShell SDK,请执行以下操作:

  1. 下载安装程序:https://download.apps.cloud.com/CitrixPoshSdk.exe。软件包同时包含 x86 和 x64 实现。
  2. 在下载的文件夹中,找到并运行安装程序。
  3. 按照对话框完成安装。

系统将在 %TEMP%\CitrixLogs\CitrixPoshSdk 中创建安装日志。日志可以帮助解决安装问题。

在该资源位置中加入了域的计算机上运行 Citrix Virtual Apps and Desktops 远程 PowerShell SDK:

  • 打开 PowerShell 命令提示符。不需要以管理员身份运行。
  • 添加 Citrix 管理单元:asnp citrix.*
  • 可以使用 Get-XdAuthentication cmdlet 显式进行身份验证。或者,运行您的第一个 Citrix Virtual Apps and Desktops PowerShell SDK 命令,该命令将提示您进行与 Get-XdAuthentication 相同的身份验证。
  • 要跳过身份验证提示,可以通过在 Citrix Cloud 控制台中创建的安全客户端使用 Set-XdCredentials cmdlet 来创建默认的身份验证配置文件。
  • 继续运行 PowerShell SDK cmdlet 或 PowerShell SDK 自动化脚本。请参见下例。

Citrix 建议您不要在 Cloud Connector 上运行此 SDK 的 cmdlet。SDK 的操作不涉及 Cloud Connector。

要卸载远程 PowerShell SDK,请从用于删除或更改程序的 Windows 功能中选择 Citrix Virtual Apps and Desktops Remote PowerShell SDK(Citrix Virtual Apps and Desktops 远程 PowerShell SDL)。单击鼠标右键并选择卸载。按照对话框进行操作。

示例活动

常见活动包括设置计算机目录、应用程序和用户。示例脚本如下所示。

    $users = "xd.local\Domain Users"

    $TSVDACatalogName = "TSVDA"

    $TSVDADGName = "TSVDA"

    $TSVDAMachineName = "xd\ds-tsvda2"

    #Create TSVDA Catalog

    $brokerUsers = New-BrokerUser -Name $users

    $catalog = New-BrokerCatalog -Name $TSVDACatalogName -AllocationType "Random" -Description $TSVDACatalogName -PersistUserChanges "OnLocal" -ProvisioningType "Manual" -SessionSupport "MultiSession" -MachinesArePhysical $true

    #Add TSVDA Machine to Catalog

    $BrokeredMachine = New-BrokerMachine -MachineName $TSVDAMachineName -CatalogUid $catalog.uid

    #Create new desktops & applications delivery group

    $dg = New-BrokerDesktopGroup -Name $TSVDADGName -PublishedName $TSVDADGName -DesktopKind "Shared" -SessionSupport "MultiSession" -DeliveryType DesktopsAndApps -Description $TSVDADGName

    #Create notepad application

    New-BrokerApplication -ApplicationType HostedOnDesktop -Name "Notepad" -CommandLineExecutable "notepad.exe" -DesktopGroup $dg

    #Assign users to desktops and applications

    New-BrokerEntitlementPolicyRule -Name $TSVDADGName -DesktopGroupUid $dg.Uid -IncludedUsers $brokerUsers -description $TSVDADGName

    New-BrokerAccessPolicyRule -Name $TSVDADGName -IncludedUserFilterEnabled $true -IncludedUsers $brokerUsers -DesktopGroupUid $dg.Uid -AllowedProtocols @("HDX","RDP")

    New-BrokerAppEntitlementPolicyRule -Name $TSVDADGName -DesktopGroupUid $dg.Uid -IncludedUsers $brokerUsers -description $TSVDADGName

    #Add machine to delivery group

    Add-BrokerMachine -MachineName $TSVDAMachineName -DesktopGroup $dg

限制

本版本中支持以下 Citrix Virtual Apps and Desktops PowerShell 管理单元:

  • Broker
  • Active Directory (AD) 标识
  • 计算机创建
  • 配置
  • 配置日志记录
  • 主机
  • 委派管理
  • 分析

有关这些管理单元中的 cmdlet 的详细信息,请参阅 Citrix Virtual Apps and Desktops SDK

完成身份验证后,远程访问在 24 小时内在当前的 PowerShell 会话中保持有效。超过此时间后,必须输入您的凭据。

必须在该资源位置中的计算机上运行远程 PowerShell SDK。

以下 cmdlet 在远程操作中处于禁用状态,以保持 Citrix Cloud 控制平面的完整性和安全性。

Citrix.ADIdentity.Admin.V2:

  • Copy-AcctIdentityPool
  • Get-AcctDBConnection
  • Get-AcctDBSchema
  • Get-AcctDBVersionChangeScript
  • Get-AcctInstalledDBVersion
  • Remove-AcctServiceMetadata
  • Reset-AcctServiceGroupMembership
  • Set-AcctDBConnection
  • Set-AcctServiceMetadata
  • Test-AcctDBConnection

Citrix.Analytics.Admin.V1:

  • Get-AnalyticsDBConnection
  • Get-AnalyticsDBSchema
  • Get-AnalyticsDBVersionChangeScript
  • Get-AnalyticsInstalledDBVersion
  • Import-AnalyticsDataDefinition
  • Remove-AnalyticsServiceMetadata
  • Reset-AnalyticsServiceGroupMembership
  • Set-AnalyticsDBConnection
  • Set-AnalyticsServiceMetadata
  • Set-AnalyticsSite
  • Set-AnalyticsDBConnection

Citrix.DelegatedAdmin.Admin.V1:

  • Add-AdminRight
  • Get-AdminDBConnection
  • Get-AdminDBSchema
  • Get-AdminDBVersionChangeScript
  • Get-AdminInstalledDBVersion
  • Import-AdminRoleConfiguration
  • New-AdminAdministrator
  • Remove-AdminAdministrator
  • Remove-AdminAdministratorMetadata
  • Remove-AdminRight
  • Remove-AdminServiceMetadata
  • Reset-AdminServiceGroupMembership
  • Set-AdminAdministrator
  • Set-AdminAdministratorMetadata
  • Set-AdminDBConnection
  • Set-AdminServiceMetadata
  • Test-AdminDBConnection

Citrix.Broker.Admin.V2:

  • Get-BrokerDBConnection
  • Get-BrokerDBSchema
  • Get-BrokerDBVersionChangeScript
  • Get-BrokerInstalledDBVersion
  • Get-BrokerLease
  • New-BrokerMachineConfiguration
  • Remove-BrokerControllerMetadata
  • Remove-BrokerLease
  • Remove-BrokerLeaseMetadata
  • Remove-BrokerMachineConfigurationMetadata
  • Remove-BrokerMachineConfiguration
  • Remove-BrokerSiteMetadata
  • Remove-BrokerUserFromApplication
  • Reset-BrokerLicensingConnection
  • Reset-BrokerServiceGroupMembership
  • Set-BrokerControllerMetadata
  • Set-BrokerDBConnection
  • Set-BrokerLeaseMetadata
  • Set-BrokerMachineConfiguration
  • Set-BrokerMachineConfigurationMetadata
  • Set-BrokerSiteMetadata
  • Test-BrokerDBConnection
  • Test-BrokerLicenseServer
  • Update-BrokerBrokerLocalLeaseCache

Citrix.Configuration.Admin.V2:

  • Export-ConfigFeatureTable
  • Get-ConfigDBConnection
  • Get-ConfigDBSchema
  • Get-ConfigDBVersionChangeScript
  • Get-ConfigInstalledDBVersion
  • Get-ConfigServiceGroup
  • Import-ConfigFeatureTable
  • Register-ConfigServiceInstance
  • Remove-ConfigRegisteredServiceInstanceMetadata
  • Remove-ConfigServiceGroup
  • Remove-ConfigServiceGroupMetadata
  • Remove-ConfigServiceMetadata
  • Remove-ConfigSiteMetadata
  • Reset-ConfigServiceGroupMembership
  • Set-ConfigDBConnection
  • Set-ConfigRegisteredServiceInstance
  • Set-ConfigRegisteredServiceInstanceMetadata
  • Set-ConfigServiceGroupMetadata
  • Set-ConfigServiceMetadata
  • Set-ConfigSite
  • Set-ConfigSiteMetadata
  • Test-ConfigDBConnection
  • Unregister-ConfigRegisteredServiceInstance

Citrix.Host.Admin.V2:

  • Get-HypDBConnection
  • Get-HypDBSchema
  • Get-HypDBVersionChangeScript
  • Get-HypInstalledDBVersion
  • Remove-HypServiceMetadata
  • Reset-HypServiceGroupMembership
  • Set-HypDBConnection
  • Set-HypServiceMetadata
  • Test-HypDBConnection

Citrix.ConfigurationLogging.Admin.V1:

  • Get-LogDBConnection
  • Get-LogDBSchema
  • Get-LogDBVersionChangeScript
  • Get-LogInstalledDBVersion
  • Remove-LogOperation
  • Remove-LogServiceMetadata
  • Remove-LogSiteMetadata
  • Reset-LogDataStore
  • Reset-LogServiceGroupMembership
  • Set-LogDBConnection
  • Set-LogServiceMetadata
  • Set-LogSite
  • Set-LogSiteMetadata
  • Test-LogDBConnection

Citrix.MachineCreation.Admin.V2:

  • Get-ProvDBConnection
  • Get-ProvDBSchema
  • Get-ProvDBVersionChangeScript
  • Get-ProvInstalledDBVersion
  • Get-ProvServiceConfigurationData
  • Remove-ProvServiceConfigurationData
  • Remove-ProvServiceMetadata
  • Reset-ProvServiceGroupMembership
  • Set-ProvDBConnection
  • Set-ProvServiceConfigurationData
  • Set-ProvServiceMetadata
  • Test-ProvDBConnection

Citrix.EnvTest.Admin.V1:

  • Get-EnvTestDBConnection
  • Get-EnvTestDBSchema
  • Get-EnvTestDBVersionChangeScript
  • Get-EnvTestInstalledDBVersion
  • Remove-EnvTestServiceMetadata
  • Reset-EnvTestServiceGroupMembership
  • Set-EnvTestDBConnection
  • Set-EnvTestServiceMetadata
  • Test-EnvTestDBConnection

Citrix.Monitor.Admin.V1:

  • Get-MonitorConfiguration
  • Get-MonitorDBConnection
  • Get-MonitorDBSchema
  • Get-MonitorDBVersionChangeScript
  • Get-MonitorDataStore
  • Get-MonitorDataStore
  • Get-MonitorInstalledDBVersion
  • Remove-MonitorServiceMetadata
  • Reset-MonitorDataStore
  • Reset-MonitorServiceGroupMembership
  • Set-MonitorConfiguration
  • Set-MonitorDBConnection
  • Set-MonitorServiceMetadata
  • Test-MonitorDBConnection

Citrix.Storefront.Admin.V1:

  • Build-SfCluster
  • Get-SfClusters
  • Get-SfDBConnection
  • Get-SfDBSchema
  • Get-SfDBVersionChangeScript
  • Get-SfInstalledDBVersion

适用于 App-V 包和服务器的 Citrix Virtual Apps and Desktops 服务发现模块

Citrix Virtual Apps and Desktops 服务可以使用单管理员方法(从网络共享访问软件包)或双管理员管理方法(从 Microsoft App-V 管理服务器访问软件包)将包含在 App-V 包中的应用程序交付到端点。

使用 Citrix Virtual Apps and Desktops 服务向应用程序库注册 App-V 包和 Microsoft App-V 管理和发布服务器的过程与使用本地部署注册包的过程略有差别。但是,将应用程序分配给用户并在用户的端点上启动的过程相同。

Citrix Cloud 中的服务管理控制台无法查看资源位置中的文件。此外,该控制台也无法直接发现您的基础结构中的 App-V 包或 Microsoft App-V 服务器。发现模块提供的功能可用于发现本地基础结构中的 App-V 包信息,并将包信息上载到 Virtual Apps and Desktops 服务。包信息包括 App-V 包、Microsoft App-V 服务器和包中包含的应用程序。

发现模块使用 Virtual Apps and Desktops 远程 PowerShell SDK。可以从网络共享或 Microsoft App-V 管理服务器发现包信息。可以在您的资源位置中的计算机上使用发现模块。

使用发现模块的必备条件:

  • 验证 PowerShell 3.0 或更高版本在计算机上是否可用。
  • 验证计算机上是否安装了 Citrix Virtual Apps and Desktops 远程 PowerShell SDK。
  • 验证您是否有权访问包含 App-V 包的网络共享。
  • 验证您是否有权访问安装了 Citrix Cloud Connector 和托管 Microsoft App-V 管理服务器的服务器。

在 Citrix Cloud 中添加或删除 App-V 包

下面的过程适用于从网络共享添加 App-V 包(单管理员管理)以及从 Microsoft App-V 管理服务器(双管理员管理)添加所有已发布的 App-V 包。如果使用双管理员管理方法,则必须像使用单管理员管理方法时一样管理添加的 App-V 包。

将 App-V 包添加到 Citrix Cloud 中的应用程序库

步骤 1:下载发现模块

从 Citrix Virtual Apps and Desktops 服务下载页面 https://www.citrix.com/downloads/citrix-cloud/product-software/xenapp-and-xendesktop-service.html 下载发现模块。将 zip 文件 Citrix.Cloud.AppLibrary.Admin.v1.psm1 解压到一个便捷的文件夹中。

注意:

此文件也在 Support\Tools\Scripts 中的 Citrix Virtual Apps and Desktops ISO 上提供,可在本地复制此文件,也可以直接从 CD 驱动器引用。

步骤 2:验证计算机上是否安装了 Virtual Apps and Desktops 远程 PowerShell SDK

步骤 3:导航到包含发现模块的文件夹

在 PowerShell 窗口中,键入包含发现模块的文件夹的完整路径,然后按 Enter 键。

步骤 4:导入发现模块

使用以下命令导入发现模块:Import-Module.\Citrix.Cloud.AppLibrary.Admin.v1.psm1

步骤 5:将 App-V 包添加到 Citrix Cloud

导入模块后,使用下面描述的任一方法将 App-V 包添加到 Citrix Cloud 中的应用程序库。

要从网络共享添加 App-V 包,请在 PowerShell 窗口中使用以下命令:Import-AppVPackageToCloud。例如: Import-AppVPackageToCloud –PackagePath \\AppVSrv\share\Notepad++.appv

注意:

有关使用命令的详细信息,请在 PowerShell 窗口中键入 Get-Help Import-AppVPackageToCloud 以获取帮助信息。

要从 Microsoft App-V 管理服务器添加 App-V 包,请在 PowerShell 窗口中使用以下命令:Import-AppVPackagesFromManagementServerToCloud。例如: Import-AppVPackagesFromManagementServerToCloud –ManagementSrvFQDN AppVMngSrv.domain.local

注意:

  • 此命令将所有已发布的 App-V 包从 Microsoft App-V 管理服务器导入到 Citrix Cloud。
  • 将 App-V 包添加到 Citrix Cloud 后,必须像使用单管理员管理方法那样对其进行管理。
  • 有关使用命令的详细信息,请在 PowerShell 窗口中键入 Get-Help Import-AppVPackagesFromManagementServerToCloud 以获取帮助信息。

步骤 6:使用您的 Citrix Cloud 凭据登录

出现 Citrix Cloud 窗口后,输入您的 Citrix Cloud 凭据,然后单击登录。出现提示时,选择目标客户。脚本成功执行后,App-V 包将添加到 Citrix Cloud 中的应用程序库。

从 Citrix Cloud 中的应用程序库中删除 App-V 包

要从 Citrix Cloud 中的应用程序库中删除 App-V 包,请参阅本地部署中的从应用程序库中删除 App-V 包

高级 PowerShell 功能

该模块包含以下高级函数,您可以从自己的 PowerShell 脚本调用这些函数:

  • Import-AppVPackageToCloud -PackagePath <App-V 包的完整 UNC 路径> 发现所有必需的信息并将其上载到 Citrix Virtual Apps and Desktop 服务,以从单个 App-V 包发布应用程序。
  • Import-AppVPackagesFromManagementServerToCloud -ManagementSrvFQDN <Microsoft App-V 管理服务器的 FQDN> 发现管理服务器发布的包的 UNC 路径并依次为每个路径调用 Import-AppVPackageToCloud

    注意:

    以此种方式发现的包将使用单管理员管理方法加载到 Citrix Virtual Apps and Desktops 服务。Citrix Virtual Apps and Desktops 服务无法使用双管理员管理方法交付包。

  • Import-AppVDualAdminToCloud -ManagementSrvUrl <Microsoft App-V 管理服务器的 URL> -PublishingServerUrl <Microsoft App-V 发布服务器的 URL> 发现 Microsoft App-V 管理和发布服务器并将内容导入应用程序库。此 cmdlet 导入使用 Microsoft App-V 管理服务器的所有软件包以及相关信息。可以通过 PowerShell 添加和删除服务器。

    注意:

    此 cmdlet 在双管理员模式下添加 App-V 软件包。仅导入在 Microsoft App-V 管理服务器上发布并添加了 AD 组的 App-V 软件包。如果您更改了 Microsoft App-V 管理服务器,请重新运行此 cmdlet 以将应用程序库与 Microsoft App-V 管理服务器同步。

  • Remove-AppVServerFromCloud -ManagementSrvUrl <Microsoft App-V 管理服务器的 URL> - PublishingServerUrl <Microsoft App-V 发布服务器的 URL> 删除添加到应用程序库的 Microsoft App-V 管理和发布服务器。

    注意:

    此 cmdlet 删除指定的 Microsoft App-V 管理和发布服务器,以及所有关联的 App-V 包。

在该资源位置内部加入了域的计算机上运行 App-V 包和服务器的发现模块:

  • 打开 PowerShell 命令提示符。不需要以管理员身份运行。
  • 添加 Citrix 管理单元:asnp citrix.*
  • 可以使用 Get-XdAuthentication cmdlet 显式进行身份验证。或者,执行 App-V PowerShell SDK 命令的第一个发现模块,这将提示您进行与 Get-XdAuthentication 相同的身份验证。
  • 要跳过身份验证提示,可以通过在 Citrix Cloud 控制台中创建的安全客户端使用 Set-XdCredentials cmdlet 创建默认的身份验证配置文件。
  • 继续执行 PowerShell SDK cmdlet 或 PowerShell SDK 自动化脚本。请参见以下示例。

示例活动

导入 Virtual Apps and Desktops 服务 App-V 包发现模块

import-module "D:\Support\Tools\Scripts\Citrix.Cloud.AppLibrary.Admin.v1.psm1"

循环浏览 App-V 包存储目录并上载每个包

Get-ChildItem -Path "\FileServer.domain.net\App-V Packages" -Filter *.appv |
Foreach-Object{
    Import-AppVPackageToCloud -PackagePath $_.FullName
}

发现并上载使用 Microsoft App-V 管理服务器注册的包

Import-AppVPackagesFromManagementServerToCloud -ManagementSrvFQDN AppVManagementServer.domain.net

发现 Microsoft App-V 管理和发布服务器并将配置添加到应用程序库

这也会导入 Microsoft App-V 管理服务器在双管理员模式下管理的所有软件包。

Import-AppVDualAdminCloud -ManagementSrvUrl http://AppVManagementServer.domain.net –PublishingServerUrl http://AppVManagementServer.domain.net:8001

阅读模块中包含的 PowerShell 帮助文档

Get-Help Import-AppVPackageToCloud

限制

  • 无法直接从 Citrix Cloud 中的服务管理控制台发现资源位置基础结构上的 App-V 包。
  • Citrix Cloud 中的服务管理控制台与 Microsoft App-V 管理服务器未建立实时连接。在重新运行 Import-AppVDualAdminCloud 之前,对 Microsoft App-V 管理服务器中的软件包和其他配置所做的更改不会反映在服务管理控制台中。这与本地软件包发现行为不同(在 App-V 文档 中进行介绍)。

Monitor Service OData API

除使用监视功能显示历史数据外,还可以使用 Monitor Service 的 API 查询数据。您可以使用 API 执行以下操作:

  • 分析历史趋势以便进行未来规划
  • 对连接失败和计算机故障进行细致的故障排除
  • 提取信息以用于其他工具和流程;例如,可以使用 Microsoft Excel 的 PowerPivot 表以不同的方式显示数据
  • 基于 API 提供的数据构建自定义用户界面

有关详细信息,请参阅Monitor Service OData API。有关访问 Monitor Service API 的说明,请参阅使用 Citrix Cloud 中的 OData v4 端点访问 Monitor Service 数据

Citrix Virtual Apps and Desktops 服务 API

Virtual Apps and Desktops 服务 API 位于 https://developer.cloud.com/virtual-apps-and-desktops

免责声明

本软件/示例代码“按原样”提供,不附带任何类型的表示、保证或条件。可以使用、修改和分发本软件/示例代码,风险需自行承担。CITRIX 不承诺任何形式的明示、默示、书面、口头或法定的保证,包括但不仅限于适销性、特定目的适用性、所有权和非侵权性。在不限制上述规定的通用性的原则下,您承认并同意 (a) 本软件/示例代码可能会出现错误、设计缺陷或其他问题,可能会导致数据丢失或财产损害;(b) 可能无法使本软件/示例代码完全正常运行;以及 (c) Citrix 可能会停止提供本软件/示例代码的当前版本和/或任何将来的版本,无需事先通知,也不承担任何责任。在任何情况下都不应使用本软件/代码来支持极度危险的行为,包括但不仅限于维持生命或爆破行为。根据违约责任或任何其他责任理论,CITRIX 及其分支机构或代理对使用本软件/示例代码导致的任何损害都不承担责任,包括但不仅限于直接的、特殊的、附带的、后果性的损害或其他损害,即使已被告知造成此类损害的可能性。您同意保护 Citrix 并使 Citrix 免于承担因您使用、修改或分发本代码导致的任何索赔。