Vous êtes ici

Script de sauvegarde de VM ESXi en Powershell

Nous allons voir comment mettre en place un script de sauvegarde de vos machines virtuelles depuis Windows à l'aide de Powershell.

Les prérequis sont :

  • PowerShell ( évidement )
  • VMware vSphere PowerCLI
  • plink ( Telecharger )

Le script va : mettre en pause votre VM, copier son intégralité sur un disque type NAS ( vous pouvez choisir n'importe quel emplacement), puis allumer votre VM

Voici le script powershell a éxecuter : Backvm.ps1 :

# Ajout du snap-in de VMware
add-pssnapin VMware.VimAutomation.Core

# Parametres
$server = "192.168.*.*"
$login = "root"
$password = "password"
$machine = "Machine_Virtuelle"
$date = Get-Date -Format yy-MM-dd--HH\hmm
$nasFolder = "\\NAS\vm_esxi"
$nasLogin = "admin"
$nasPwd = "password"

# Affichage du résumé des opérations
echo "########## Résumé des opération ##########"
echo "Operation : Sauvegarde VM ESXi"
echo Server: $server
echo Login: $login
echo Machine: $machine
echo "##########################################"

# Connection à l'ESXi
$vh = Connect-VIServer -Server $server -Port 443 -User $login -Password $password

# Récuperation de la VM concernée
$vm = Get-VM -Server $vh | Where-Object {$_.Name -eq $machine}

# Récuperation de l'ID de la VM
$vmid = $vm.Id -replace ("VirtualMachine-","")

# Récupération du Datastore de la VM
$ds = Get-Datastore -Server $vh -VM $vm

# Mise en pause de la VM
Start-Process c:\bakvm\plink.exe -ArgumentList "-ssh -P 22 -l $login -pw $password $server vim-cmd vmsvc/power.suspend $vmid"
Start-Sleep -s 10

# Ajout d'un PSDrive sur la banque de données
Remove-PSDrive -Name DS
$psd = New-PSDrive -Name DS -PSProvider ViMdatastore -Root \ -location $ds

# Montage NAS
net use S: /DELETE
net use S: $nasFolder /USER:$nasLogin $nasPwd
mkdir $nasFolder\VMBackup\$machine -Confirm:$false

# Nous copions les fichiers du vh vers la destination et demontons le PSDrive. Attention nom datastore parfois différent nom machine !
Copy-DatastoreItem DS:\$machine\* -Destination $nasFolder\VMBackup\$machine
Remove-PSDrive -Name DS

# Démarrage de la VM
Start-Process c:\bakvm\plink.exe -ArgumentList "-ssh -P 22 -l $login -pw $password $server vim-cmd vmsvc/power.on $vmid" 
Start-Sleep -s 10

# Deconnection du serveur ESXi
Disconnect-VIServer -Server $vh -Confirm:$false

# Fin du script
echo "########## Operation terminée ##########"
echo "Fin...."
echo "Machine: Sauvegarde $machine ok"
echo "#########################################"
 
Il n'y a plus qu'à configurer ce script en tâche planifiée, et vos VMs seront automatiquement sauvegardées à l'endroit que vous avez définit.

www.le-gas.fr : Le guide de l'admin Systeme