
Contexte
Dans un environnement VMware, la sauvegarde régulière des machines virtuelles (VM) est cruciale pour garantir la continuité d’activité. PowerCLI, l’interface en ligne de commande de VMware, permet d’automatiser les tâches d’administration, y compris le déclenchement de sauvegardes via l’API Veeam Backup & Replication.

Quand l’utiliser ?
- Vous avez plusieurs VM à sauvegarder quotidiennement.
- Vous souhaitez centraliser le lancement des jobs Veeam depuis un serveur d’administration.
- Vous avez besoin d’un script réutilisable et planifiable (Task Scheduler, cron, etc.).
🟢 Étapes de mise en œuvre
- 🔹 Préparer l’environnement PowerCLI
# Installation du module PowerCLI (si non présent) Install-Module -Name VMware.PowerCLI -Scope CurrentUser -Force # Désactiver le warning de certification SSL (optionnel, à ajuster selon votre politique) Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false - 🔹 Se connecter au vCenter
# Remplacez les valeurs par vos identifiants $vc = "vcenter01.corp.local" $cred = Get-Credential -Message "Credentials for $vc" Connect-VIServer -Server $vc -Credential $cred - 🔹 Lister les VM à sauvegarder (exemple : toutes les VM du datacenter DC-Prod)
# Filtrer les VM du datacenter $datacenter = Get-Datacenter -Name "DC-Prod" $vmList = Get-VM -Location $datacenter - 🔹 Lancer le job Veeam via son API REST
# Variables API Veeam $veeamServer = "veeam01.corp.local" $veeamUser = "admin" $veeamPwd = "P@ssw0rd!" $base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$veeamUser`:$veeamPwd")) # Déclencher le job nommé "Backup_Prod" $jobName = "Backup_Prod" $uri = "https://$veeamServer:9419/api/jobs" $body = @{ name = $jobName } | ConvertTo-Json Invoke-RestMethod -Method Post -Uri $uri -Headers @{ Authorization = "Basic $base64Auth" } -Body $body -ContentType "application/json" -SkipCertificateCheck - 🔹 Vérifier le statut du job
# Récupérer le status du dernier run $jobInfo = Invoke-RestMethod -Method Get -Uri "$uri?name=$jobName" -Headers @{ Authorization = "Basic $base64Auth" } -SkipCertificateCheck $lastRun = $jobInfo.data[0].lastRun Write-Host "Job $jobName terminé avec le statut : $($lastRun.result)" - 🔹 Déconnexion du vCenter
Disconnect-VIServer -Server $vc -Confirm:$false
⚠️ Méthode alternative
Si vous ne souhaitez pas passer par l’API REST de Veeam, vous pouvez invoquer directement le script PowerShell fourni par Veeam (Start-VBRJob -Name "Backup_Prod") depuis une session où le module Veeam.Backup.PowerShell est chargé.
⚠️ Bonnes pratiques de sécurité
- Utilisez un compte dédié avec les droits minimums nécessaires (lecture du vCenter, déclenchement de jobs Veeam).
- Stockez les mots de passe dans le SecureString ou dans Azure Key Vault plutôt qu’en clair.
- Activez la validation du certificat SSL et évitez
-SkipCertificateChecken production. - Consignez toutes les exécutions dans un journal (
Start-Transcript) pour l’audit.
✅ Conclusion
En combinant PowerCLI et l’API REST de Veeam, vous obtenez une solution souple pour automatiser les sauvegardes de vos VM ESXi. Le script peut être planifié, versionné et intégré à votre chaîne CI/CD, garantissant ainsi une protection fiable de vos workloads critiques.
