fbpx

Citrix Virtual Apps and Desktops SDK淺析以及MCS對接實例

Citrix Virtual Apps and Desktops 產品提供了豐富的基於微軟WindowsPowerShell的SDK接口供用戶完成自動化維運以及三方業務系統的集成對接工作

一、如何安裝SDK


Citrix Virtual Apps and Desktops 產品的 SDK 是一系列基於 PowerShell 的 Snap-Ins 的集合,這些 Snap-Ins可以通過如下兩種方式安裝:
1. 安裝 Citrix Delivery Controller 或者 Citrix Studio 時,Citrix Virtual Apps and Desktops PowershellSnap-Ins會自動被安裝;
2.  若使用者需要在非 Citrix Delivery Controller 或 Studio 主機上執行 SDK 的話,可以通過 Citrix Virtual Apps and Desktops
安裝介質手動並按需安裝這些 Snap-Ins。安裝路徑為 x64\CitrixDesktop Delivery Controller資料夾。

二、如何運行SDK


1. 用戶可以在 Citrix Studio 中,選擇 PowerShell 頁,點擊 LaunchPowerShell 以啟動一個 PowerShell 3.0 的Shell 程式。需要注意的是,運行 Shell 或者腳本的帳號需要具有 Citrix 環境的管理權限。

2.     使用腳本調用這些 SDK cmdlets,需要事先查看微軟相關檔案在 PowerShell 中配置合適的 Execution Policy。
3.     使用 Add-PSSnapin 命令將 Citrix Cmdlets 添加到 PowerShell 環境。針對大多數使用者場景,我們只需要根據使用者實際對接需求添加特定的 CmdletsAdd-PSSnapinCitrix.ADIdentity.Admin.V2 使用如下命令可以添加所有安裝的 Citrix CmdletsAdd-PSSnapinCitrix.*.Admin.V*

三、如何使用SDK


1. Citrix Virtual Apps and Desktops 所有通過 Studio 執行的管理操作會被翻譯為對應的 PowerShell SDK 並記錄在 Studio的PowerShell 頁中。用戶可以借助此功能快速找出 SDK 調用的上下文並完成相關 Scripting 工作。如下圖所示,管理員在 Studio 中操作將 VDA 機器置於維護模式,在 Studio 的 PowerShell 頁面中可以看到實際調用的是 Set-BrokerMachineMaintenanceModeSDK 修改機器的維護模式狀態。


2. 關於更多 Citrix Virtual Apps and Desktops SDK 的介紹,請參考:https://citrix.github.io/delivery-controller-sdk/MCS 自動化實例我們可以參考如下案例,使用 MCS SDK 完成:
·       判斷 MCS 機器目錄中可用機器不足5台時,
·       自動生成 10 個桌面並添加到對應 MCS 的機器目錄中
如下案例只涉及 SDK 的調用關係整理,在實際 Scripting 過程中還需要完成相關字串處理以及參數傳遞。

 1.獲取不足 5 台可用機器的 MachineCatalogs。如果有多個 machine catalog 滿足調節,需要分別執行如下添加機器的邏輯 $machineCatalog= Get-BrokerCatalog -Provisioningtype mcs -Filter { unassignedcount  -lt 5} 
2.針對一個 MCS Machine Catalog 添加機器的邏輯
2.1 找到對應 MCS machine catalog 的 acctIdentityPool$acctIdentityPool=Get-AcctIdentityPool-IdentityPoolName $machineCatalog.name 
2.2 針對當前 MCS Machine Catalog 所對應的 acctIdentityPool,檢查微軟 AD 中是否有可用的機器帳號$availableAccount=Get-AcctADAccount-IdentityPoolUid $acctIdentityPool.IdentityPoolUid-Lock $False -State “Available” 
2.3 若可用帳號數量小於需要新建的機器數量,調用 New-AcctADAccount 添加機器的 AD 帳號,傳入需要添加 AD 帳號數量 $Password= ‘xx’$pass= ConvertTo-SecureString -AsPlainText $Password -Force New-AcctADAccount -Count 10 -IdentityPoolUid $acctIdentityPool.IdentityPoolUid -adusernamelab\ctxadmin -adpassword $pass 
2.4 再獲取一次可用的機器帳號,並記錄機器 ADAccountName 和 AccountSid$availableAccount= Get-AcctADAccount  -IdentityPoolUid $acctIdentityPool.IdentityPoolUid-Lock $False -State “Available”  
2.5 開始創建新機器,傳入機器的 ADAccountName,命令會返回 ProvTask的taskID$ptask= New-ProvVM  -ADAccountName@(“LAB\test08$”,”LAB\test09$”) -ProvisioningSchemeName$machineCatalog.name -RunAsynchronously 
2.6 通過 Get-ProvTask 獲取該 provisiontask 的進度 Get-ProvTask-taskid $ptask.Taskid

判斷Provtask完成:

TaskProgress = 100
Active = false

CreatedVirtualMachines 表示已經完成創建的機器。完成兩台或以上的機器,機器名會以逗號隔開。這裡需要保證與步驟 2.5 中傳入的機器名一致時,即表示待創建的機器都已經創建成功。 
2.7 通過 Get-provVM,找到完成創建機器對應的 VMId

2.8 傳入該機器的VMID,並執行Lock-ProvVMLock-ProvVM  -ProvisioningSchemeName $machineCatalog.name-Tag “Brokered” -VMID @(“22eb9114-ba58-96de-d7df-9c8e2f3c477b”) 
2.9 傳入機器的ADaccountName,執行New-BrokerMachine,將VM加入machine CatelogNew-BrokerMachine -CatalogUid $machineCatalog.uid -MachineName”LAB\test08$”  
2.10 將proveTask移除Remove-ProvTask  -TaskId $ptask.taskid

發表迴響

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: