Merhabalar, bu makalemde vSphere ortamında, Veeam Backup and Replication uygulaması ile yedeklemesi yapılmayan sanal makinelerin listeslenmesi için gerekli olan script’i sizlerle paylaşıyor olacağım.
Bu script çalıştırılmadan önce mutlaka VMware PowerCLI uygulamasının Veeam Backup and Replication sunucusu üzerinde kurulumu gerekmektedir. PowerCLI kurulumu için aşağıdaki komutu çalıştırmanız yeterli olacaktır.
Install-Module -Name VMware.PowerCLI
Aşağıdaki script içeriğini Powershell ISE de yada .ps1 uzantısı ile kaydedip çalıştırınız.
Bu scirpt içerisindeki “$vcenter” ve “DaysToCheck” satırını yapınıza uygun olacak şekilde düzenleyiniz.
#Verify if Virtual Machines have been backed up
asnp "VMware.VimAutomation.Core" -ErrorAction SilentlyContinue
asnp "VeeamPSSnapIn" -ErrorAction SilentlyContinue
#-------------------------------------------------------
# Configuration
$vcenter = "vxvcenter.kadirkozan.com.tr"
$excludevms=@() # eg $excludevms=@("vm1","vm2")
$DaysToCheck= 1
#-------------------------------------------------------
# Connect to vCenter
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false | out-null
Connect-ViServer $vcenter | out-null
# Build hash table with excluded VMs
$excludedvms=@{}
foreach ($vm in $excludevms) {
$excludedvms.Add($vm, "Excluded")
}
# Get a list of all VMs from vCenter and add to hash table, assume Unprotected
$vms=@{}
foreach ($vm in (Get-VM | Where-Object {$_.PowerState -eq "PoweredOn"} | ForEach-Object {$_ | Select-object @{Name="VMname";Expression={$_.Name}}})) {
if (!$excludedvms.ContainsKey($vm.VMname)) {
$vms.Add($vm.VMname, "Unprotected")
}
}
# Find all backup job sessions that have ended in the last week
$vbrsessions = Get-VBRBackupSession | Where-Object {$_.JobType -eq "Backup" -or $_.JobType -eq "Replica" -and $_.EndTime -ge (Get-Date).adddays(-$DaysToCheck)}
# Find all successfully backed up VMs in selected sessions (i.e. VMs not ending in failure) and update status to "Protected"
$backedupvms=@{}
foreach ($session in $vbrsessions) {
foreach ($vm in ($session.gettasksessions() | Where-Object {$_.Status -ne "Failed"} | ForEach-Object { $_ | Select-object @{Name="VMname";Expression={$_.Name}}})) {
if($vms.ContainsKey($vm.VMname)) {
$vms[$vm.VMname]="Protected"
}
}
}
# Output VMs in color coded format based on status.
foreach ($vm in $vms.Keys)
{
if ($vms[$vm] -eq "Protected") {
write-host -foregroundcolor green "$vm was backed up in the past $DaysToCheck day(s)"
} else {
write-host -foregroundcolor red "$vm was NOT backed up in the past $DaysToCheck day(s)"
}
}
Script’in çalışması tamamlandıktan sonra içerikte belirlediğiniz değer (günden) den fazla süredir yedeklenmeyen sanal makineler kırmızı renkle belirtilecektir.