WEM API と Windows PowerShell を使用して構成セットを自動的にバックアップする
Workspace Environment Management (WEM) 管理者は、設定が失われないように、構成セットを定期的にバックアップする必要がある場合があります。たとえば、12 時間ごとにバックアップを起動し、バックアップファイルをローカルで自動的に管理したい場合があります。WEM パブリック API と Windows PowerShell を使用すると、その目標を達成できます。
一般的なワークフローは次のとおりです。
- Citrix Cloud API クライアントに申し込む
- 構成セットをバックアップする PowerShell スクリプトの作成
- スクリプトを実行するようにスケジュールされたタスクを設定します
前提条件
始める前に、Citrix カスタマー ID と関連する API ベースの URL を確認してください。
Citrix Cloud にサインインし、[ IDおよびアクセス管理]>[APIアクセス]に移動して、CitrixカスタマーIDを確認します。
Citrix Auth APIベースのURLやWEM APIベースのURLを含むAPIベースのURLは、接続しているCitrix Cloud のリージョンに関連しています。リージョンは、Citrix Cloud へのオンボーディング時に決定されます。 アカウント設定からお住まいの地域を照会することもできます。
API ベースの URL は、以下の表で確認できます。
リージョン | Citrix 認証 API ベース URL | WEM API ベース URL |
---|---|---|
米国(米国) | 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 クライアントに申し込む
[ ID とアクセス管理] > [API アクセス] に移動します。セキュアクライアントの名前を入力し、「 Create Client」をクリックし、セキュアクライアント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 のエクスポート」を参照してください。
注:
各ベアラートークンは 1 時間後に期限切れになります。Citrix Cloud 認証APIとWEM APIを頻繁に呼び出さないようにするには、バックアップ時間が1時間未満の場合はベアラートークンをキャッシュして再利用します。
スクリプトを実行するようにスケジュールされたタスクを設定します
Citrix Cloud にアクセスできるマシンでは、Windowsの[スタート Task Scheduler
]メニューから起動するか、 taskschd.msc
Windowsのコマンドプロンプトから起動します。
という名前のフォルダを作成できます WEM scheduled task
。
フォルダーに、という名前のタスクを作成します launch Invoke-WEMConfigSetBackupAPI.ps1
。「12時間ごとに1日繰り返す」という新しいトリガーを追加し、スクリプトを起動する新しいアクションを追加します Invoke-WEMConfigSetBackupAPI.ps1
。