I needed to check the backup ‘settings’ from a bunch of backup jobs within Veeam, and doing them manually is a waste of time.
So i made a little powershell script to do it. This is one of the first times i’m using powershell, so it probably could be optimized.
if((Get-PSSnapin -Name VeeamPSSnapIn -ErrorAction SilentlyContinue) -eq $null){ Add-PSSnapin "VeeamPSSnapIn" } $JobInfo = @() foreach($vbrJob in (Get-VBRJob | Sort Name)){ foreach($Object in (Get-VBRJobObject -Job $vbrJob | Sort Name)){ $Details = "" | Select JobName,ObjectSizeinGB,Algorithm,RetainCycles,RetainDays,CompressionLevel,ChangedBlockTracking,ExcludeSwapFile,EnableDeduplication,SourceProxyAutoDetect,EnableIntegrityChecks,SetResultsToVmNotes $JobSize = ([math]::Round($Object.Info.ApproxSize / 1GB)) $Details.JobName = $vbrJob.Name $Details.ObjectSizeinGB = $JobSize $JobnameObject = Get-VBRJob | Where {$_.Name -eq $vbrJob.Name} $Options = $JobnameObject.GetOptions() # Determine what kinda job this is if ($Options.Options.RootNode.Algorithm -eq "Syntethic"){ $Algorithm = "Reversed Incremental" } if ($Options.Options.RootNode.Algorithm -eq "Increment") { if ($Options.Options.RootNode.TransformFullToSyntethic -eq "True" -And $Options.Options.RootNode.TransformIncrementsToSyntethic -eq "True") { $Algorithm = "Incremental ( Synthetic full enabled, Transform previous full backup chains into rollbacks )" } if ($Options.Options.RootNode.TransformFullToSyntethic -eq "True" -And $Options.Options.RootNode.TransformIncrementsToSyntethic -eq "False") { $Algorithm = "Incremental ( Synthetic full enabled )" } if ($Options.Options.RootNode.TransformFullToSyntethic -eq "False" -And $Options.Options.RootNode.TransformIncrementsToSyntethic -eq "False") { $Algorithm = "Incremental ( Synthetic full disabled, Active full backups )" } } # Detect if Changed Block Tracking is enabled if ($Options.Options.RootNode.UseChangeTracking -eq "True" -And $Options.Options.RootNode.EnableChangeTracking -eq "True") { $CBT = "Enabled" } else { $CBT = "Disabled" } # Detect if the swap file is excluded if ($Options.Options.RootNode.ExcludeSwapFile -eq "True") { $swap = "Enabled" } else { $swap = "Disabled" } # Detect if inline Deduplication is enabled if ($Options.Options.RootNode.EnableDeduplication -eq "True") { $dedup = "Enabled" } else { $dedup = "Disabled" } # Detect if SourceProxyAutoDetect is Automatically Selected if ($Options.Options.RootNode.SourceProxyAutoDetect -eq "True") { $backupproxy = "Automatic selection" } else { $backupproxy = $Options.Options.RootNode.SourceProxyAutoDetect } # Detect if Integrity Checks are enabled if ($Options.Options.RootNode.EnableIntegrityChecks -eq "True") { $integrity = "Enabled" } else { $integrity = "Disabled" } # Detect if Results To Vm Notes are enabled if ($Options.Options.RootNode.SetResultsToVmNotes -eq "True") { $notes = "Enabled" } else { $notes = "Disabled" } $RetainDays = $Options.Options.RootNode.RetainDays $Details.Algorithm = $Algorithm $Details.RetainCycles = $Options.Options.RootNode.RetainCycles $Details.CompressionLevel = $Options.Options.RootNode.CompressionLevel $Details.RetainDays = "Remove deleted VMs data from backup after $RetainDays days" $Details.ChangedBlockTracking = $CBT $Details.ExcludeSwapFile = $swap $Details.EnableDeduplication = $dedup $Details.SourceProxyAutoDetect = $backupproxy $Details.EnableIntegrityChecks = $integrity $Details.SetResultsToVmNotes = $notes } $Details } Exit
The output :
JobName : Job01 ObjectSizeinGB : 409 Algorithm : Incremental ( Synthetic full enabled ) RetainCycles : 14 RetainDays : Remove deleted VMs data from backup after 14 days CompressionLevel : 6 ChangedBlockTracking : Enabled ExcludeSwapFile : Enabled EnableDeduplication : Enabled SourceProxyAutoDetect : Automatic selection EnableIntegrityChecks : Enabled SetResultsToVmNotes : Enabled JobName : Job02 ObjectSizeinGB : 9 Algorithm : Reversed Incremental RetainCycles : 30 RetainDays : Remove deleted VMs data from backup after 30 days CompressionLevel : 6 ChangedBlockTracking : Enabled ExcludeSwapFile : Enabled EnableDeduplication : Enabled SourceProxyAutoDetect : Automatic selection EnableIntegrityChecks : Enabled SetResultsToVmNotes : Enabled
Hi there.
Thank you very much for sharing this. I am already searching for a while to find that specific information.
First I tought i can easily get this via get-vbrjob but sadly it isn not that easy 🙂
So, thanks again! Nice job.