Workspace Environment Management
Merci pour vos commentaires

Ce article a été traduit automatiquement. (Clause de non responsabilité)

Sauvegardez automatiquement les ensembles de configuration à l’aide des API WEM et de Windows PowerShell

En tant qu’administrateur de gestion de l’environnement de travail (WEM), vous devrez peut-être sauvegarder régulièrement vos ensembles de configuration pour éviter que les paramètres ne soient perdus. Vous souhaiterez peut-être déclencher la sauvegarde, par exemple, toutes les 12 heures, et gérer les fichiers de sauvegarde localement et automatiquement. En utilisant les API publiques WEM et Windows PowerShell, vous pouvez atteindre cet objectif.

Un flux de travail général est le suivant :

  1. Demander un client API Citrix Cloud
  2. Écrivez un script PowerShell pour sauvegarder vos ensembles de configuration
  3. Configurer une tâche planifiée pour exécuter le script

Logiciels requis

Avant de commencer, assurez-vous de connaître votre ID client Citrix et les URL de base de l’API associées.

Connectez-vous à Citrix Cloud, accédez à Gestion des identités et des accès > Accès APIet recherchez votre ID client Citrix.

ID client Citrix

Les URL de base de l’API, y compris l’URL de base de l’API Citrix Auth et l’URL de base de l’API WEM, sont liées à la région de Citrix Cloud à laquelle vous vous connectez. La région est déterminée lors de votre connexion à Citrix Cloud. Vous pouvez également interroger votre région dans Paramètres du compte.

Région

Vous pouvez trouver les URL de base de l’API en consultant le tableau suivant.

Région URL de base de l’API d’authentification Citrix URL de base de l’API WEM
États-Unis (US) api-us.cloud.com api.wem.cloud.com
Union européenne (UE) api-eu.cloud.com eu-api.wem.cloud.com
Asie Pacifique Sud (AP-S) api-ap-s.cloud.com aps-api.wem.cloud.com
Japon (JP) api.citrixcloud.jp jp-api.wem.citrixcloud.jp

Pour plus d’informations sur les URL de base de l’API, consultez Prise en main des API Citrix Cloud et Présentation de l’API WEM.

Demander un client API Citrix Cloud

Accédez à Gestion des identités et des accès > Accès API. Tapez le nom de votre client sécurisé, cliquez sur Créer un clientet enregistrez l’ID client sécurisé et le secret client localement.

Client sécurisé API

Écrivez un script PowerShell pour sauvegarder vos ensembles de configuration

Utilisez le script PowerShell suivant et enregistrez-le sous Invoke-WEMConfigSetBackupAPI.ps1. Assurez-vous de remplacer les variables au début du script.

# 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") }

Pour plus d’informations sur les jetons porteurs, consultez Premiers pas avec les API Citrix Cloud.

Pour plus d’informations sur l’utilisation de l’API WEM pour sauvegarder l’ensemble de configuration, voir Exportation de l’API de l’ensemble de configuration WEM.

Remarque :

Chaque jeton porteur expire après une heure. Pour éviter d’appeler fréquemment les API d’authentification Citrix Cloud et les API WEM, mettez en cache le jeton porteur et réutilisez-le si la durée de sauvegarde prend moins d’une heure.

Si vous rencontrez l’erreur 504 Gateway Time-out, cela signifie probablement que votre ensemble de configuration est trop volumineux, ce qui entraîne un dépassement du délai d’expiration de l’API d’une minute. Dans de tels cas, essayez plutôt d’utiliser le script PowerShell suivant. Notez que ce script utilise des API qui ne sont pas actuellement publiques et que ces API peuvent changer à l’avenir.

# 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}" } $URL = "https://${CitrixWEMAPIBaseURL}/services/wem/sites" $Response = Invoke-RestMethod -Method 'Get' -Uri $URL -Headers $Headers $Sites = $Response.items if ($ConfigSetsToBackUp -ne $null -and $ConfigSetsToBackUp.Count -gt 0) { $Sites = $Sites | Where-Object { $_.name -in $ConfigSetsToBackUp } } $Sites | ForEach-Object { $Name = $_.name Write-Host "Backing up configuration set `"$Name`"" $URL = "https://${CitrixWEMAPIBaseURL}/services/wem/export/site?async=true" $FolderName = "BACKUPFOLDER-" + [Guid]::NewGuid().ToString() $Body = @{ folderName = $FolderName id = $_.id name = $_.name type = 'Configuration set' } | ConvertTo-Json $Response = Invoke-RestMethod -Method 'Post' -Uri $URL -Headers $Headers -Body $Body -ContentType 'application/json; charset=utf-8' Write-Host "Waiting for the backup job to complete..." $URL = "https://${CitrixWEMAPIBaseURL}/services/wem/export/site/recentJobs" do { Start-Sleep -Seconds 5 $Response = Invoke-RestMethod -Method 'Get' -Uri $URL -Headers $Headers $BackupJob = $Response.backup[0] $IsOnGoing = $BackupJob.id -eq $_.id -and $BackupJob.status -eq 'Running' } while ($IsOnGoing) $URL = "https://${CitrixWEMAPIBaseURL}/services/wem/export/site/contentView?name=${FolderName}" $Response = Invoke-RestMethod -Method 'Get' -Uri $URL -Headers $Headers $Timestamp = Get-Date -Format "yyyyMMddHHmmss" $Response | ConvertTo-Json -Depth 10 | Out-File (Join-Path $FolderToSaveBackup "${Name}-${Timestamp}.json") -Encoding utf8 $URL = "https://${CitrixWEMAPIBaseURL}/services/wem/export?prefix=site%2F${FolderName}%2F" $Response = Invoke-RestMethod -Method 'Delete' -Uri $URL -Headers $Headers }

Configurer une tâche planifiée pour exécuter le script

Sur une machine avec accès à Citrix Cloud, démarrez Planificateur de tâches à partir du menu Démarrer de Windows ** ou démarrez taskchd.msc à partir de l’invite de commande **Windows .

Vous pouvez créer un dossier nommé Tâche planifiée WEM.

Dans le dossier, créez une tâche nommée lancez Invoke-WEMConfigSetBackupAPI.ps1. Ajoutez un nouveau déclencheur répété toutes les 12 heures pendant une durée de 1 jour et ajoutez une nouvelle action de démarrage du script Invoke-WEMConfigSetBackupAPI.ps1.

Planificateur de tâches

La version officielle de ce document est en anglais. Certains contenus de la documentation Cloud Software Group ont été traduits de façon automatique à des fins pratiques uniquement. Cloud Software Group n'exerce aucun contrôle sur le contenu traduit de façon automatique, qui peut contenir des erreurs, des imprécisions ou un langage inapproprié. Aucune garantie, explicite ou implicite, n'est fournie quant à l'exactitude, la fiabilité, la pertinence ou la justesse de toute traduction effectuée depuis l'anglais d'origine vers une autre langue, ou quant à la conformité de votre produit ou service Cloud Software Group à tout contenu traduit de façon automatique, et toute garantie fournie en vertu du contrat de licence de l'utilisateur final ou des conditions d'utilisation des services applicables, ou de tout autre accord avec Cloud Software Group, quant à la conformité du produit ou service à toute documentation ne s'applique pas dans la mesure où cette documentation a été traduite de façon automatique. Cloud Software Group ne pourra être tenu responsable de tout dommage ou problème dû à l'utilisation de contenu traduit de façon automatique.
Sauvegardez automatiquement les ensembles de configuration à l’aide des API WEM et de Windows PowerShell