使用 WEM API 和 Windows PowerShell 自动备份配置集
作为 Workspace Environment Management (WEM) 管理员,您可能需要定期备份配置集,以防止设置丢失。例如,您可能希望每隔 12 小时触发一次备份,然后在本地自动管理备份文件。使用 WEM 公共 API 和 Windows PowerShell,您可以实现这个目标。
一般工作流程如下所示:
- 申请 Citrix Cloud API 客户端
- 编写一个 PowerShell 脚本来备份您的配置集
- 配置计划任务以运行脚本
必备条件
在开始之前,请确保您知道自己的 Citrix 客户 ID 和相关的 API 基础 URL。
登录 Citrix Cloud,导航到身份识别和访问管理 > API 访问,然后找到您的 Citrix 客户 ID。
API 基本 URL,包括 Citrix 身份验证 API 基本 URL 和 WEM API 基本 URL,与您正在连接的 Citrix Cloud 区域相关。该区域是在您登录 Citrix Cloud 时确定的。您也可以在帐户设置中查询您的区域。
您可以通过查看下表来找到 API 基本 URL。
地理区域 | Citrix 身份验证 API 基本 URL | WEM API 基本 URL |
---|---|---|
美国 (US) | api-us.cloud.com | api.wem.cloud.com |
欧洲联盟(EU) | api-eu.cloud.com | eu-api.wem.cloud.com |
亚太南部 (AP-S) | api-ap-s.cloud.com | aps-api.wem.cloud.com |
日本 (JP) | api.citrixcloud.jp | jp-api.wem.citrixcloud.jp |
有关 API 基本 URL 的更多信息,请参阅 Citrix Cloud API 入门和 WEM API 概述。
申请 Citrix Cloud API 客户端
导航到身份识别和访问管理 > API 访问。键入您的安全客户端的名称,单击“创建客户端”,然后将安全客户端 ID 和客户端密钥保存在本地。
编写一个 PowerShell 脚本来备份您的配置集
使用以下 PowerShell 脚本并将其另存为 Invoke-WEMConfigSetBackupAPI.ps1
。务必替换脚本开头的变量。
# replace the variables before running the script
$CitrixCustomerId = 'your-citrix-customer-id'
$CitrixAuthAPIBaseURL = 'api-us.cloud.com'
$CitrixWEMAPIBaseURL = 'api.wem.cloud.com'
$ClientId = 'your-api-client-id'
$ClientSecret = 'your-api-client-secret'
$ConfigSetsToBackUp = @('Default Site', 'MyConfigSet') # leave it empty if you want to back up all configuration sets
$FolderToSaveBackup = 'C:\ProgramData'
# get bearer token
$ErrorActionPreference = 'Stop'
$URL = "https://${CitrixAuthAPIBaseURL}/cctrustoauth2/${CitrixCustomerId}/tokens/clients"
$Body = "grant_type=client_credentials&client_id=${ClientId}&client_secret=${ClientSecret}"
$Response = Invoke-RestMethod -Method 'Post' -Uri $URL -Body $Body -ContentType 'application/x-www-form-urlencoded'
$BearerToken = $Response.access_token
if ([string]::IsNullOrEmpty($BearerToken))
{
throw 'Cannot retrieve bearer token.'
}
Write-Host "Retrieved bearer token successfully."
# back up WEM configuration sets
if (-not (Test-Path -Path $FolderToSaveBackup -PathType 'Container'))
{
throw 'The folder to save backup not exists.'
}
$Headers = @{
'Citrix-CustomerId' = $CitrixCustomerId
'Accept' = 'application/json'
'Authorization' = "CWSAUTH bearer=${BearerToken}"
}
if ($ConfigSetsToBackUp.Count -eq 0 -or $ConfigSetsToBackUp -eq $null)
{
$URL = "https://${CitrixWEMAPIBaseURL}/services/wem/sites"
$Response = Invoke-RestMethod -Method 'Get' -Uri $URL -Headers $Headers
$ConfigSetsToBackUp = $Response.items |% { $_.name }
}
$ConfigSetsToBackUp | ForEach-Object {
Write-Host "Backing up configuration set ""$\_"""
$URL = "https://${CitrixWEMAPIBaseURL}/services/wem/sites/%24export?name=$\_"
Write-Host "GET $URL"
$Response = Invoke-RestMethod -Method 'Get' -Uri $URL -Headers $Headers
$Timestamp = Get-Date -Format "yyyyMMddHHmmss"
$Response | ConvertTo-Json -Depth 10 | Out-File (Join-Path $FolderToSaveBackup "${_}-${Timestamp}.json")
}
<!--NeedCopy-->
有关持有者令牌的更多信息,请参阅 Citrix Cloud API 入门。
有关使用 WEM API 备份配置集的更多信息,请参阅导出 WEM 配置集 API。
注意:
每个持有者令牌在一小时后过期。为避免频繁调用 Citrix Cloud 身份验证 API 和 WEM API,请缓存持有者令牌,并在备份持续时间少于一个小时时重复使用。
配置计划任务以运行脚本
在可以访问 Citrix Cloud 的计算机上, 从 Windows 的“开始”菜单启动Task Scheduler
或从 Windows 命令提示符启动 taskschd.msc
。
您可以创建一个名为 WEM scheduled task
的文件夹。
在文件夹中,创建一个名为 launch Invoke-WEMConfigSetBackupAPI.ps1
的任务。添加一个新的触发器“每 12 小时重复一次,持续 1 天”,并添加启动脚本 Invoke-WEMConfigSetBackupAPI.ps1
的新操作。