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
https://discover-thefutureofwork-tw.cloud/2022/04/06/citrixvirtualappsanddesktops_sdk_practise/
返回