Pourquoi un backup quotidien ?
Avoir une infrastructure Parallels RAS c’est bien, offrir la possibilité à nos utilisateurs de pouvoir travailler sur des VDI ou des applications publiées, le tout de manière sécurisé est un grand avantage. Mais rappelons que notre principal travail est principalement de proposer une infrastructure résiliente et pérenne. La mise en place d’une haute-disponibilité des serveurs permet de répondre à la perte d’un ou de plusieurs serveurs, voire de site, mais qu’en est-il de la sauvegarde de notre configuration RAS ?
En effet, entre les modifications qui peuvent être fait par plusieurs administrateurs ou une simple erreur de configuration, il faut impérativement avoir une sauvegarde de notre configuration RAS, et si possible une sauvegarde récente. Cela tombe bien c’est le but de cet article.
Automatisation ?
Bien sûr nous pouvons faire notre sauvegarde manuellement avant une mise à jour par exemple, mais cela ne peut pas répondre à notre besoin, à savoir une sauvegarde quotidienne. Donc l’automatisation est essentielle. Pour cela Parallels Ras offre plusieurs possibilités :
- PowerShell
- Rest Api
Nous utilisons PowerShell, c’est le plus facile à utiliser car la commande est particulièrement simple et peut être fait directement depuis nos serveurs d’administration RAS. Les prérequis sont simples:
- Windows PowerShell 3.0 ou plus
- Microsoft .NET Framework 4.5.2 ou plus
- Un compte ayant les droits sur l’infrastructure Parallels RAS
Pour avoir la liste complète des commandes disponible ou plus simple https://docs.parallels.com/ras-powershell-api-20

Le script
Le script exporte la configuration sur un emplacement réseau à la date du jour, pour chaque utilisateur le mot de passe sera demandé la première fois puis enregistré.

<# Backup Parallels Ras Basic - using current logged user - asking for password if needed #> function Connexion { if(Test-Path $Secure_String) { $Secure = Get-Content $Secure_String | ConvertTo-SecureString -Key (1..16) }else{ $password = Read-Host -AsSecureString -Prompt "Enter password for user: $env:username" $Encrypted = ConvertFrom-SecureString -SecureString $password -Key (1..16) $Encrypted | Set-Content "$Script_Directory\$($env:USERNAME).txt" $Secure = Get-Content "$Script_Directory\$($env:USERNAME).txt" | ConvertTo-SecureString -Key (1..16) } try { write-host "Connect to RAS Broker with account $($env:USERNAME)@$($env:USERDNSDOMAIN)" New-RASSession -Server $env:COMPUTERNAME -Username "$($env:USERNAME)@$($env:USERDNSDOMAIN)" -Password $Secure write-host "RAS Backup Success" -ForegroundColor Green } catch { write-host "RAS Backup Error" -ForegroundColor Yellow $_.Exception.Message } } ############################################################################# # Variables ############################################################################# $Script_Directory = $pwd $Export_Path = "\\Nxad01\nxway_shares\RAS_BACKUP\$(get-date -format dd-MM-yyyy).dat2" $Secure_String = "$Script_Directory\$($env:USERNAME).txt" ############################################################################# # Script Start ############################################################################# Connexion try { Invoke-RASExportSettings $Export_Path #Write-Output "Ras Export Settings exported to $Export_Path" } catch { Write-Output "Can't connect to RAS FARM. Please check your account or password" $_.Exception.Message }