Lorsqu’on utilise les snapshots, il arrive parfois d’oublier de les supprimer après les modifications sur la VM et de laisser des snapshots actifs. Le script ci-dessous permet de lister tous les snapshots de plus de 7 jours présents dans le vCenter. De plus ce script permet d’envoyer un mail avec en pièce jointe le fichier excel remplit, il est donc très facile de l’utiliser en tâche automatisée toutes les semaines par exemple.
Ce script se base sur un fichier excel modèle ci-joint (snapshot-7jrs-model).
Script :
Connect-VIServer “nom-vCenter” -User “nom-user” -Password “passwd-user”
$ExcelFile = “c:snapshot-7jrs-model.xls”
$excel = New-Object -ComObject Excel.Application
$excel.visible = $true
$excel.DisplayAlerts = $false
$Workbook = $excel.workbooks.open($ExcelFile)
$Worksheets = $Workbook.worksheets
$Sheet = $Excel.Worksheets.Item(1)
$introw =2
$info = @()
$myvms = Get-VM
$today = Get-Date
$snapshots = Get-VM | Get-Snapshot | where {$_.Created -le ($today.addDays(-7))} #Vous pouvez modifier la valeur 7 jours
foreach ($SNAPSHOT in $snapshots){
$nomSnapshot = $SNAPSHOT.Name
$vm = $SNAPSHOT.VM.Name
$description = $SNAPSHOT.Description
$created = $SNAPSHOT.Created.DateTime
$taille = $SNAPSHOT.SizeGB
#Remplissage du tableau
$Sheet.Cells.Item($intRow, 1) = $vm
$Sheet.Cells.Item($intRow, 2) = $created
$Sheet.Cells.Item($intRow, 3) = $nomSnapshot
$Sheet.Cells.Item($intRow, 4) = $description
$Sheet.Cells.Item($intRow, 5) = $taille
$introw = $introw+1
}
$date = Get-Date -Format yyyy-MM-dd
$Workbook.SaveAs(“C:snapshot-7jrs-$date”)+ “.xls”
$Workbook.CheckCompatibility = $False
$Workbook.Close()
$excel.Quit()
####### PARTIE MAIL #########
$PJ = (“C:snapshot-7jrs-$date”)+ “.xls”
$Body = “Bonjour,
Vous trouverez en piece jointe, la liste des snapshot de plus de 7 jours.
Cordialement”
$mailto = @(“xxxx@gmail.com“)
$EmailFrom = “RAPPORT-SNAPSHOT <xxxx@gmail.com>”
$EmailSubject = “[Snapshot-Plus-7jrs]”
$SMTPSRV = “Smtpmail.xxxx.xxxx.xxxx“
send-Mailmessage -To $mailto -From $EmailFrom -Subject $EmailSubject -SmtpServer $SMTPSRV -Body $Body -Attachments $PJ
Disconnect-VIServer -Confirm:$False
[…] Exemple ici : […]