Script PowerShell de sauvegarde des machines virtuelles

Script PowerShell de sauvegarde des machines virtuelles

2 mai 2018 Non Par admin

Ce Script vous permet d’effectuer une sauvegarde des machine virtuelles sur un serveur VMware Server.

Attention : le répertoire de sauvegarde est par default : “D:\dossier de sauvegarde” à vous de le changer selon votre besoin.

À noter que le script gère automatiquement l’état des machines pendant la sauvegarde et écrit un message dans le journal d’événement.

Bonne utilisation 😉

Et merci à son auteur : Robin Lemesle.

##########################################################

# Script de sauvegarde de toutes les machines virtuelles sur un serveur VMWARE Server #

##########################################################

$VmPowerOpMode_Hard = 1

$VmPowerOpMode_Soft = 2

$VmPowerOpMode_TrySoft = 3

$VmExecutionState_Off = 2

$VmExecutionState_On = 1

$VmExecutionState_Stuck = 4

$VmExecutionState_Suspended = 3

$VmExecutionState_Unknown = 5

$dossier_de_sauvegarde=”D:\dossier de sauvegarde”

#création des objects VMCOM nécessaires pour communiquer avec les machines virtuelles

$vm_serveur = New-Object -comobject vmcom.vmserverctl

$params = New-Object -comobject vmcom.vmconnectparams

$vm_serveur.Connect($params)

$noms_machines = $vm_serveur.RegisteredVmNames

#cette instance spécifie le journal d’événements application

$event = New-Object -TypeName System.Diagnostics.EventLog -argumentlist application

#spécification de la source

$event.Set_source(“script de sauvegarde”)

#listage toutes les machines virtuelles

foreach($nom in $noms_machines)

{

# connection a la machine virtuelle

$vm = new-object -comobject vmcom.vmctl

$vm.connect($params,$nom)

if($vm.ExecutionState -eq $VmExecutionState_On)

{

$vm.suspend($VmPowerOpMode_TrySoft)

while($vm.ExecutionState -ne $VmExecutionState_Suspended)

{

}

$indice=$nom.LastIndexOf(“\”)

$nom_rep_machine=$nom.substring(0,$indice)

$indice=$nom_rep_machine.LastIndexOf(“\”)

$nom_machine=$nom_rep_machine.substring($indice+1,$nom_rep_machine.length-$indice-1)

Copy-Item $nom_rep_machine -Recurse $dossier_de_sauvegarde -force

$event.WriteEntry(“la machine vituelle : $nom_machine, est sauvegardée”)

write-host “$nom_machine : machine sauvegardée”

$vm.start($VmPowerOpMode_TrySoft)

}

elseif($vm.ExecutionState -eq $VmExecutionState_Suspended -or $VmExecutionState_Off)

{

$indice=$nom.LastIndexOf(“\”)

$nom_rep_machine=$nom.substring(0,$indice)

$indice=$nom_rep_machine.LastIndexOf(“\”)

$nom_machine=$nom_rep_machine.substring($indice+1,$nom_rep_machine.length-$indice-1)

Copy-Item $nom_rep_machine -Recurse $dossier_de_sauvegarde -force

$event.WriteEntry(“la machine vituelle : $nom_machine, est sauvegardée”)

write-host “$nom_machine : machine sauvegardée”

}

}