
Updated Veeam Weekly Backup Report – Powershell (BAW6)
Back in 2015, I created a 3-day Backup Report for Veeam that was based on the ‘SysAdmin Modular Report’ (SAMReport) – this is the link to the original post for that report: https://virtualworlduk.co.uk/3-day-veeam-backup-report-powercli/
That report has been useful for a couple of years but I felt that I could do better, without having to link back to the vCenter server quite so much. After looking around at what other people were doing, I stumbled across the work that Shawn Masterson has been doing with his ‘Veeam v9 – My Veeam Report v9.5.3’ (https://blog.smasterson.com/2017/12/22/veeam-v9-my-veeam-report-9-5-3/) and I was then able to utilise some of his great work to create an updated version of my report as a full Weekly Backup Report. The comparison between my old report and my new report are shown below:
Old Report
Updated Report
As you can see from the screenshot, the look of the new report is more modern. This screenshot is taken from my lab environment with some forced failures. Backup failures are highlighted Red, VMs that end with a Warning status are highlighted Yellow and if a virtual machine has not been backed up at all (or is new), then you’ll see a blank next to the name on the days that it hasn’t been backed up. This means that it should be easier to identify if there are any issues.
Other key items to be aware of with this, is that I am utilising Veeam 9.5 to run the report against, the report still needs to be run on the Veeam server itself but should run significantly quicker than previous reports, as it is just referencing the information in Veeam rather than connecting to vCenter. For my lab environment, I back up the virtual machines by datastore rather than adding individual backups to a job, this means that all of my virtual machines are automatically added to the backup jobs once a new virtual machine is created. It also means that my report should always include all of the virtual machines in the report. I am utilising Powershell version 5 on one of my systems but have also tested this utilising Powershell version 4.
The code may still not be optimised as best as it could be and the report may be a bit rough and ready but it seems to work okay for me.
The code listing is below:
If (!(Get-PSSnapin -Name VeeamPSSnapIn -ErrorAction SilentlyContinue)) { If (!(Add-PSSnapin -PassThru VeeamPSSnapIn)) { Write-Error "Unable to load Veeam snapin" -ForegroundColor Red Exit } } get-module -ListAvailable VM* | Import-Module $datetoday = [DateTime]::Today.ToString("ddd d MMM yyy") $ReportDate = get-date -f yyyy-MM-dd $veeamExePath = "D:\Program Files\Veeam\Backup and Replication\Console\Veeam.Backup.Shell.exe" # this should be the location of the Veeam.Backup.Shell.exe file $veeamExe = Get-Item $veeamExePath $VeeamVersion = $veeamExe.VersionInfo.ProductVersion $emailTo = "Change This" # Email address that you wish to send the report to $smtpServerref = "Change This" # SMTP server name used for emailing $emailFrom = "Change This" # Email address that the report should come from $Outputlocation = "Change This" # this should be the directory and file name to save a copy of the report # HTML Stuff - this sets up the HTML report sections $headerObj = @" <!DOCTYPE html> <html> <head> <title>"Veeam Backup Report - $datetoday</title> <style> body {font-family: Tahoma; background-color:#ffffff;} table {font-family: Tahoma;width: $($rptWidth)%;font-size: 12px;border-collapse:collapse;} <!-- table tr:nth-child(odd) td {background: #e2e2e2;} --> th {background-color: #e2e2e2;border: 1px solid #a7a9ac;border-bottom: none;} td {background-color: #ffffff;border: 1px solid #a7a9ac;padding: 2px 3px 2px 3px;} </style> </head> "@ $bodyTop = @" <body> <center> <table> <tr> <td style="width: 100%;height: 12px;border: none;background-color: #143d63;color: White;font-size: 12px;vertical-align: bottom;text-align: right;padding: 0px 5px 0px 0px;"Report generated on $(Get-Date -format g)</td> </tr> <tr> <td style="width: 100%;height: 24px;border: none;background-color: #ffffff;color: Black;font-size: 24px;vertical-align: bottom;text-align: center;padding: 0px 0px 0px 15px;">Veeam Backup Report - $datetoday</td> </tr> <tr> <td style="width: 100%;height: 12px;border: none;background-color: #143d63;color: White;font-size: 12px;vertical-align: bottom;text-align: right;padding: 0px 5px 0px 0px;">Veeam Backup & Replication v$VeeamVersion</td> </tr> <tr> <td style="width: 50%;height: 12px;border: none;background-color: ZZhdbgZZ;color: White;font-size: 12px;vertical-align: bottom;text-align: left;padding: 0px 0px 2px 5px;">$rptMode</td> <td style="width: 50%;height: 12px;border: none;background-color: ZZhdbgZZ;color: White;font-size: 12px;vertical-align: bottom;text-align: right;padding: 0px 5px 2px 0px;">MVR v$MVRversion</td> </tr> </table> "@ $subHead01 = @" <table> <tr> <td style="height: 35px;background-color: #f3f4f4;color: #626365;font-size: 16px;padding: 5px 0 0 15px;border-top: 5px solid white;border-bottom: none;"> "@ $subHead01suc = @" <table> <tr> <td style="height: 35px;background-color: #00b050;color: #ffffff;font-size: 16px;padding: 5px 0 0 15px;border-top: 5px solid white;border-bottom: none;"> "@ $subHead01war = @" <table> <tr> <td style="height: 35px;background-color: #ffd96c;color: #ffffff;font-size: 16px;padding: 5px 0 0 15px;border-top: 5px solid white;border-bottom: none;"> "@ $subHead01err = @" <table> <tr> <td style="height: 35px;background-color: #FB9895;color: #ffffff;font-size: 16px;padding: 5px 0 0 15px;border-top: 5px solid white;border-bottom: none;"> "@ $subHead02 = @" </td> </tr> </table> "@ $HTMLbreak = @" <table> <tr> <td style="height: 10px;background-color: #626365;padding: 5px 0 0 15px;border-top: 5px solid white;border-bottom: none;"></td> </tr> </table> "@ $footerObj = @" <table> <tr> <td style="height: 15px;background-color: #ffffff;border: none;color: #626365;font-size: 10px;text-align:center;</a></td> </tr> </table> </center> </body> </html> "@ $BodySummHeader = @" <table> <tr> <td style="height: 24px;border: none;background-color: #ffffff;color: Black;font-size: 15px;vertical-align: bottom;text-align: center;padding: 0px 0px 0px 15px;">Backups</td> </tr> </table> "@ $Signature = @" Checked By:______________________________ Date:______________________________ Authorised:______________________________ Date:______________________________ "@ $Result1= @{} $Result2= @{} $Result3= @{} $Result4= @{} $Result5= @{} $Result6= @{} $Result7= @{} $Result8= @{} $Result9= @{} #This sets up the number of days that will be removed from today for the report dates $Day9='-9' $Day8='-8' $Day7='-7' $Day6='-6' $Day5='-5' $Day4='-4' $Day3='-3' $Day2='-2' $Day1='-1' $Day0='0' #As the backups only run Monday - Saturday, there are longer backup windows over the weekend if ([DateTime]::Today.AddDays($Day9).DayOfWeek -ne "Saturday" -or "Sunday") { $StartDate1 = [DateTime]::Today.AddDays($Day9).AddHours(16) $EndDate1 = [DateTime]::Today.AddDays($Day8).AddHours(16) $Date1=[DateTime]::Today.AddDays($Day9).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day9).DayOfWeek -eq "Saturday") { $StartDate1 = [DateTime]::Today.AddDays($Day9).AddHours(16) $EndDate1 = [DateTime]::Today.AddDays($Day7).AddHours(05) $Date1=[DateTime]::Today.AddDays($Day9).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day9).DayOfWeek -eq "Sunday") { $Date1=[DateTime]::Today.AddDays($Day9).ToString("ddd d MMM yyy") $StartDate1 = [DateTime]::Today.AddDays($Day0).AddHours(16) $EndDate1 = [DateTime]::Today.AddDays($Day0).AddHours(16) } if ([DateTime]::Today.AddDays($Day8).DayOfWeek -ne "Saturday" -or "Sunday") { $StartDate2 = [DateTime]::Today.AddDays($Day8).AddHours(16) $EndDate2 = [DateTime]::Today.AddDays($Day7).AddHours(16) $Date2=[DateTime]::Today.AddDays($Day8).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day8).DayOfWeek -eq "Saturday") { $StartDate2 = [DateTime]::Today.AddDays($Day8).AddHours(16) $EndDate2 = [DateTime]::Today.AddDays($Day6).AddHours(05) $Date2=[DateTime]::Today.AddDays($Day8).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day8).DayOfWeek -eq "Sunday") { $Date2=[DateTime]::Today.AddDays($Day8).ToString("ddd d MMM yyy") $StartDate2 = [DateTime]::Today.AddDays($Day0).AddHours(16) $EndDate2 = [DateTime]::Today.AddDays($Day0).AddHours(16) } if ([DateTime]::Today.AddDays($Day7).DayOfWeek -ne "Saturday" -or "Sunday") { $StartDate3 = [DateTime]::Today.AddDays($Day7).AddHours(16) $EndDate3 = [DateTime]::Today.AddDays($Day6).AddHours(16) $Date3=[DateTime]::Today.AddDays($Day7).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day7).DayOfWeek -eq "Saturday") { $StartDate3 = [DateTime]::Today.AddDays($Day7).AddHours(16) $EndDate3 = [DateTime]::Today.AddDays($Day5).AddHours(05) $Date3=[DateTime]::Today.AddDays($Day7).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day7).DayOfWeek -eq "Sunday") { $Date3=[DateTime]::Today.AddDays($Day7).ToString("ddd d MMM yyy") $StartDate3 = [DateTime]::Today.AddDays($Day0).AddHours(16) $EndDate3 = [DateTime]::Today.AddDays($Day0).AddHours(16) } if ([DateTime]::Today.AddDays($Day6).DayOfWeek -ne "Saturday" -or "Sunday") { $StartDate4 = [DateTime]::Today.AddDays($Day6).AddHours(16) $EndDate4 = [DateTime]::Today.AddDays($Day5).AddHours(16) $Date4=[DateTime]::Today.AddDays($Day6).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day6).DayOfWeek -eq "Saturday") { $StartDate4 = [DateTime]::Today.AddDays($Day6).AddHours(16) $EndDate4 = [DateTime]::Today.AddDays($Day4).AddHours(05) $Date4=[DateTime]::Today.AddDays($Day6).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day6).DayOfWeek -eq "Sunday") { $Date4=[DateTime]::Today.AddDays($Day6).ToString("ddd d MMM yyy") $StartDate4 = [DateTime]::Today.AddDays($Day0).AddHours(16) $EndDate4 = [DateTime]::Today.AddDays($Day0).AddHours(16) } if ([DateTime]::Today.AddDays($Day5).DayOfWeek -ne "Saturday" -or "Sunday") { $StartDate5 = [DateTime]::Today.AddDays($Day5).AddHours(16) $EndDate5 = [DateTime]::Today.AddDays($Day4).AddHours(16) $Date5=[DateTime]::Today.AddDays($Day5).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day5).DayOfWeek -eq "Saturday") { $StartDate5 = [DateTime]::Today.AddDays($Day5).AddHours(16) $EndDate5 = [DateTime]::Today.AddDays($Day3).AddHours(05) $Date5=[DateTime]::Today.AddDays($Day5).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day5).DayOfWeek -eq "Sunday") { $Date5=[DateTime]::Today.AddDays($Day5).ToString("ddd d MMM yyy") $StartDate5 = [DateTime]::Today.AddDays($Day0).AddHours(16) $EndDate5 = [DateTime]::Today.AddDays($Day0).AddHours(16) } if ([DateTime]::Today.AddDays($Day4).DayOfWeek -ne "Saturday" -or "Sunday") { $StartDate6 = [DateTime]::Today.AddDays($Day4).AddHours(16) $EndDate6 = [DateTime]::Today.AddDays($Day3).AddHours(16) $Date6=[DateTime]::Today.AddDays($Day4).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day4).DayOfWeek -eq "Saturday") { $StartDate6 = [DateTime]::Today.AddDays($Day4).AddHours(16) $EndDate6 = [DateTime]::Today.AddDays($Day2).AddHours(05) $Date6=[DateTime]::Today.AddDays($Day4).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day4).DayOfWeek -eq "Sunday") { $Date6=[DateTime]::Today.AddDays($Day4).ToString("ddd d MMM yyy") $StartDate6 = [DateTime]::Today.AddDays($Day0).AddHours(16) $EndDate6 = [DateTime]::Today.AddDays($Day0).AddHours(16) } if ([DateTime]::Today.AddDays($Day3).DayOfWeek -ne "Saturday" -or "Sunday") { $StartDate7 = [DateTime]::Today.AddDays($Day3).AddHours(16) $EndDate7 = [DateTime]::Today.AddDays($Day2).AddHours(16) $Date7=[DateTime]::Today.AddDays($Day3).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day3).DayOfWeek -eq "Saturday") { $StartDate7 = [DateTime]::Today.AddDays($Day3).AddHours(16) $EndDate7 = [DateTime]::Today.AddDays($Day1).AddHours(05) $Date7=[DateTime]::Today.AddDays($Day3).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day3).DayOfWeek -eq "Sunday") { $Date7=[DateTime]::Today.AddDays($Day3).ToString("ddd d MMM yyy") $StartDate7 = [DateTime]::Today.AddDays($Day0).AddHours(16) $EndDate7 = [DateTime]::Today.AddDays($Day0).AddHours(16) } if ([DateTime]::Today.AddDays($Day2).DayOfWeek -ne "Saturday" -or "Sunday") { $StartDate8 = [DateTime]::Today.AddDays($Day2).AddHours(16) $EndDate8 = [DateTime]::Today.AddDays($Day1).AddHours(16) $Date8=[DateTime]::Today.AddDays($Day2).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day2).DayOfWeek -eq "Saturday") { $StartDate8 = [DateTime]::Today.AddDays($Day2).AddHours(16) $EndDate8 = [DateTime]::Today.AddDays($Day0).AddHours(05) $Date8=[DateTime]::Today.AddDays($Day2).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day2).DayOfWeek -eq "Sunday") { $Date8=[DateTime]::Today.AddDays($Day2).ToString("ddd d MMM yyy") $StartDate8 = [DateTime]::Today.AddDays($Day0).AddHours(16) $EndDate8 = [DateTime]::Today.AddDays($Day0).AddHours(16) } if ([DateTime]::Today.AddDays($Day1).DayOfWeek -ne "Saturday" -or "Sunday") { $StartDate9 = [DateTime]::Today.AddDays($Day1).AddHours(16) $EndDate9 = [DateTime]::Today.AddDays($Day0).AddHours(16) $Date9=[DateTime]::Today.AddDays($Day1).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day1).DayOfWeek -eq "Saturday") { $StartDate9 = [DateTime]::Today.AddDays($Day1).AddHours(16) $EndDate9 = [DateTime]::Today.AddDays($Day0).AddHours(23) $Date9=[DateTime]::Today.AddDays($Day1).ToString("ddd d MMM yyy") } elseif ([DateTime]::Today.AddDays($Day1).DayOfWeek -eq "Sunday") { $Date9=[DateTime]::Today.AddDays($Day1).ToString("ddd d MMM yyy") $StartDate9 = [DateTime]::Today.AddDays($Day0).AddHours(16) $EndDate9 = [DateTime]::Today.AddDays($Day0).AddHours(16) } # This checks the backups for the virtual machines on the various dates and keeps the results for later $BackupSessions1 = Get-VBRBackupSession | where {(($_.JobType -eq "Backup") -and ($_.CreationTime -ge $StartDate1) -and ($_.CreationTime -le $EndDate1))} | Sort JobName, CreationTime $Result1 = & { ForEach ($BackupSession1 in ($BackupSessions1 | ?{$_.IsRetryMode -eq $false})) { [System.Collections.ArrayList]$TaskSessions1 = @($BackupSession1 | Get-VBRTaskSession) If ($BackupSession1.Result -eq "Failed") { $RetrySessions1 = $BackupSessions1 | ?{($_.IsRetryMode -eq $true) -and ($_.OriginalSessionId -eq $BackupSession1.Id)} ForEach ($RetrySession1 in $RetrySessions1) { [System.Collections.ArrayList]$RetryTaskSessions1 = @($RetrySession1 | Get-VBRTaskSession) ForEach ($RetryTaskSession1 in $RetryTaskSessions1) { $PriorTaskSession1 = $TaskSessions1 | ?{$_.Name -eq $RetryTaskSession1.Name} If ($PriorTaskSession1) { $TaskSessions1.Remove($PriorTaskSession1) } $TaskSessions1.Add($RetryTaskSession1) | Out-Null } } } $TaskSessions1 | Select @{N="JobName";E={$BackupSession1.JobName}},@{N="SessionName";E={$_.JobSess.Name}},@{N="JobResult";E={$_.JobSess.Result}},@{N="JobStart1";E={$_.JobSess.CreationTime}},@{N="JobEnd";E={$_.JobSess.EndTime}},@{N="Date";E={$_.JobSess.CreationTime.ToString("yyyy-MM-dd")}},name,@{N="Backup1";E={$_.Status}} } } $BackupSessions2 = Get-VBRBackupSession | where {(($_.JobType -eq "Backup") -and ($_.CreationTime -ge $StartDate2) -and ($_.CreationTime -le $EndDate2))} | Sort JobName, CreationTime $Result2 = & { ForEach ($BackupSession2 in ($BackupSessions2 | ?{$_.IsRetryMode -eq $false})) { [System.Collections.ArrayList]$TaskSessions2 = @($BackupSession2 | Get-VBRTaskSession) If ($BackupSession2.Result -eq "Failed") { $RetrySessions2 = $BackupSessions2 | ?{($_.IsRetryMode -eq $true) -and ($_.OriginalSessionId -eq $BackupSession2.Id)} ForEach ($RetrySession2 in $RetrySessions2) { [System.Collections.ArrayList]$RetryTaskSessions2 = @($RetrySession2 | Get-VBRTaskSession) ForEach ($RetryTaskSession2 in $RetryTaskSessions2) { $PriorTaskSession2 = $TaskSessions2 | ?{$_.Name -eq $RetryTaskSession2.Name} If ($PriorTaskSession2) { $TaskSessions2.Remove($PriorTaskSession2) } $TaskSessions2.Add($RetryTaskSession2) | Out-Null } } } $TaskSessions2 | Select @{N="JobName";E={$BackupSession2.JobName}},@{N="SessionName";E={$_.JobSess.Name}},@{N="JobResult";E={$_.JobSess.Result}},@{N="JobStart2";E={$_.JobSess.CreationTime}},@{N="JobEnd";E={$_.JobSess.EndTime}},@{N="Date";E={$_.JobSess.CreationTime.ToString("yyyy-MM-dd")}},name,@{N="Backup2";E={$_.Status}}#,status } } $BackupSessions3 = Get-VBRBackupSession | where {(($_.JobType -eq "Backup") -and ($_.CreationTime -ge $StartDate3) -and ($_.CreationTime -le $EndDate3))} | Sort JobName, CreationTime $Result3 = & { ForEach ($BackupSession3 in ($BackupSessions3 | ?{{-not [string]::IsNullOrEmpty($_)} -and $_.IsRetryMode -eq $false})) { [System.Collections.ArrayList]$TaskSessions3 = @($BackupSession3 | Get-VBRTaskSession) If ($BackupSession3.Result -eq "Failed") { $RetrySessions3 = $BackupSessions3 | ?{($_.IsRetryMode -eq $true) -and ($_.OriginalSessionId -eq $BackupSession3.Id) } ForEach ($RetrySession3 in $RetrySessions3) { [System.Collections.ArrayList]$RetryTaskSessions3 = @($RetrySession3 | Get-VBRTaskSession) ForEach ($RetryTaskSession3 in $RetryTaskSessions3) { $PriorTaskSession3 = $TaskSessions3 | ?{$_.Name -eq $RetryTaskSession3.Name} If ($PriorTaskSession3) { $TaskSessions3.Remove($PriorTaskSession3) } $TaskSessions3.Add($RetryTaskSession3) | Out-Null } } } $TaskSessions3 | Select @{N="JobName3";E={$BackupSession3.JobName}},@{N="SessionName3";E={$_.JobSess.Name}},@{N="JobResult3";E={$_.JobSess.Result}},@{N="JobStart3";E={$_.JobSess.CreationTime}},@{N="JobEnd3";E={$_.JobSess.EndTime}},@{N="Date3";E={$_.JobSess.CreationTime.ToString("yyyy-MM-dd")}},name,@{N="Backup3";E={$_.Status}}#,status } } $BackupSessions4 = Get-VBRBackupSession | where {(($_.JobType -eq "Backup") -and ($_.CreationTime -ge $StartDate4) -and ($_.CreationTime -le $EndDate4))} | Sort JobName, CreationTime $Result4 = & { ForEach ($BackupSession4 in ($BackupSessions4 | ?{{-not [string]::IsNullOrEmpty($_)} -and $_.IsRetryMode -eq $false})) { [System.Collections.ArrayList]$TaskSessions4 = @($BackupSession4 | Get-VBRTaskSession) If ($BackupSession4.Result -eq "Failed") { $RetrySessions4 = $BackupSessions4 | ?{($_.IsRetryMode -eq $true) -and ($_.OriginalSessionId -eq $BackupSession4.Id) } ForEach ($RetrySession4 in $RetrySessions4) { [System.Collections.ArrayList]$RetryTaskSessions4 = @($RetrySession4 | Get-VBRTaskSession) ForEach ($RetryTaskSession4 in $RetryTaskSessions4) { $PriorTaskSession4 = $TaskSessions4 | ?{$_.Name -eq $RetryTaskSession4.Name} If ($PriorTaskSession4) { $TaskSessions4.Remove($PriorTaskSession4) } $TaskSessions4.Add($RetryTaskSession4) | Out-Null } } } $TaskSessions4 | Select @{N="JobName4";E={$BackupSession4.JobName}},@{N="SessionName4";E={$_.JobSess.Name}},@{N="JobResult4";E={$_.JobSess.Result}},@{N="JobStart4";E={$_.JobSess.CreationTime}},@{N="JobEnd4";E={$_.JobSess.EndTime}},@{N="Date4";E={$_.JobSess.CreationTime.ToString("yyyy-MM-dd")}},name,@{N="Backup4";E={$_.Status}}#,status } } $BackupSessions5 = Get-VBRBackupSession | where {(($_.JobType -eq "Backup") -and ($_.CreationTime -ge $StartDate5) -and ($_.CreationTime -le $EndDate5))} | Sort JobName, CreationTime $Result5 = & { ForEach ($BackupSession5 in ($BackupSessions5 | ?{{-not [string]::IsNullOrEmpty($_)} -and $_.IsRetryMode -eq $false})) { [System.Collections.ArrayList]$TaskSessions5 = @($BackupSession5 | Get-VBRTaskSession) If ($BackupSession5.Result -eq "Failed") { $RetrySessions5 = $BackupSessions5 | ?{($_.IsRetryMode -eq $true) -and ($_.OriginalSessionId -eq $BackupSession5.Id) } ForEach ($RetrySession5 in $RetrySessions5) { [System.Collections.ArrayList]$RetryTaskSessions5 = @($RetrySession5 | Get-VBRTaskSession) ForEach ($RetryTaskSession5 in $RetryTaskSessions5) { $PriorTaskSession5 = $TaskSessions5 | ?{$_.Name -eq $RetryTaskSession5.Name} If ($PriorTaskSession5) { $TaskSessions5.Remove($PriorTaskSession5) } $TaskSessions5.Add($RetryTaskSession5) | Out-Null } } } $TaskSessions5 | Select @{N="JobName5";E={$BackupSession5.JobName}},@{N="SessionName5";E={$_.JobSess.Name}},@{N="JobResult5";E={$_.JobSess.Result}},@{N="JobStart5";E={$_.JobSess.CreationTime}},@{N="JobEnd5";E={$_.JobSess.EndTime}},@{N="Date5";E={$_.JobSess.CreationTime.ToString("yyyy-MM-dd")}},name,@{N="Backup5";E={$_.Status}}#,status } } $BackupSessions6 = Get-VBRBackupSession | where {(($_.JobType -eq "Backup") -and ($_.CreationTime -ge $StartDate6) -and ($_.CreationTime -le $EndDate6))} | Sort JobName, CreationTime $Result6 = & { ForEach ($BackupSession6 in ($BackupSessions6 | ?{{-not [string]::IsNullOrEmpty($_)} -and $_.IsRetryMode -eq $false})) { [System.Collections.ArrayList]$TaskSessions6 = @($BackupSession6 | Get-VBRTaskSession) If ($BackupSession6.Result -eq "Failed") { $RetrySessions6 = $BackupSessions6 | ?{($_.IsRetryMode -eq $true) -and ($_.OriginalSessionId -eq $BackupSession6.Id) } ForEach ($RetrySession6 in $RetrySessions6) { [System.Collections.ArrayList]$RetryTaskSessions6 = @($RetrySession6 | Get-VBRTaskSession) ForEach ($RetryTaskSession6 in $RetryTaskSessions6) { $PriorTaskSession6 = $TaskSessions6 | ?{$_.Name -eq $RetryTaskSession6.Name} If ($PriorTaskSession6) { $TaskSessions6.Remove($PriorTaskSession6) } $TaskSessions6.Add($RetryTaskSession6) | Out-Null } } } $TaskSessions6 | Select @{N="JobName6";E={$BackupSession6.JobName}},@{N="SessionName6";E={$_.JobSess.Name}},@{N="JobResult6";E={$_.JobSess.Result}},@{N="JobStart6";E={$_.JobSess.CreationTime}},@{N="JobEnd6";E={$_.JobSess.EndTime}},@{N="Date6";E={$_.JobSess.CreationTime.ToString("yyyy-MM-dd")}},name,@{N="Backup6";E={$_.Status}}#,status } } $BackupSessions7 = Get-VBRBackupSession | where {(($_.JobType -eq "Backup") -and ($_.CreationTime -ge $StartDate7) -and ($_.CreationTime -le $EndDate7))} | Sort JobName, CreationTime $Result7 = & { ForEach ($BackupSession7 in ($BackupSessions7 | ?{{-not [string]::IsNullOrEmpty($_)} -and $_.IsRetryMode -eq $false})) { [System.Collections.ArrayList]$TaskSessions7 = @($BackupSession7 | Get-VBRTaskSession) If ($BackupSession7.Result -eq "Failed") { $RetrySessions7 = $BackupSessions7 | ?{($_.IsRetryMode -eq $true) -and ($_.OriginalSessionId -eq $BackupSession7.Id) } ForEach ($RetrySession7 in $RetrySessions7) { [System.Collections.ArrayList]$RetryTaskSessions7 = @($RetrySession7 | Get-VBRTaskSession) ForEach ($RetryTaskSession7 in $RetryTaskSessions7) { $PriorTaskSession7 = $TaskSessions7 | ?{$_.Name -eq $RetryTaskSession7.Name} If ($PriorTaskSession7) { $TaskSessions7.Remove($PriorTaskSession7) } $TaskSessions7.Add($RetryTaskSession7) | Out-Null } } } $TaskSessions7 | Select @{N="JobName7";E={$BackupSession7.JobName}},@{N="SessionName7";E={$_.JobSess.Name}},@{N="JobResult7";E={$_.JobSess.Result}},@{N="JobStart7";E={$_.JobSess.CreationTime}},@{N="JobEnd7";E={$_.JobSess.EndTime}},@{N="Date7";E={$_.JobSess.CreationTime.ToString("yyyy-MM-dd")}},name,@{N="Backup7";E={$_.Status}}#,status } } $BackupSessions8 = Get-VBRBackupSession | where {(($_.JobType -eq "Backup") -and ($_.CreationTime -ge $StartDate8) -and ($_.CreationTime -le $EndDate8))} | Sort JobName, CreationTime $Result8 = & { ForEach ($BackupSession8 in ($BackupSessions8 | ?{{-not [string]::IsNullOrEmpty($_)} -and $_.IsRetryMode -eq $false})) { [System.Collections.ArrayList]$TaskSessions8 = @($BackupSession8 | Get-VBRTaskSession) If ($BackupSession8.Result -eq "Failed") { $RetrySessions8 = $BackupSessions8 | ?{($_.IsRetryMode -eq $true) -and ($_.OriginalSessionId -eq $BackupSession8.Id) } ForEach ($RetrySession8 in $RetrySessions8) { [System.Collections.ArrayList]$RetryTaskSessions8 = @($RetrySession8 | Get-VBRTaskSession) ForEach ($RetryTaskSession8 in $RetryTaskSessions8) { $PriorTaskSession8 = $TaskSessions8 | ?{$_.Name -eq $RetryTaskSession8.Name} If ($PriorTaskSession8) { $TaskSessions8.Remove($PriorTaskSession8) } $TaskSessions8.Add($RetryTaskSession8) | Out-Null } } } $TaskSessions8 | Select @{N="JobName8";E={$BackupSession8.JobName}},@{N="SessionName8";E={$_.JobSess.Name}},@{N="JobResult8";E={$_.JobSess.Result}},@{N="JobStart8";E={$_.JobSess.CreationTime}},@{N="JobEnd8";E={$_.JobSess.EndTime}},@{N="Date8";E={$_.JobSess.CreationTime.ToString("yyyy-MM-dd")}},name,@{N="Backup8";E={$_.Status}}#,status } } $BackupSessions9 = Get-VBRBackupSession | where {(($_.JobType -eq "Backup") -and ($_.CreationTime -ge $StartDate9) -and ($_.CreationTime -le $EndDate9))} | Sort JobName, CreationTime $Result9 = & { ForEach ($BackupSession9 in ($BackupSessions9 | ?{{-not [string]::IsNullOrEmpty($_)} -and $_.IsRetryMode -eq $false})) { [System.Collections.ArrayList]$TaskSessions9 = @($BackupSession9 | Get-VBRTaskSession) If ($BackupSession9.Result -eq "Failed") { $RetrySessions9 = $BackupSessions9 | ?{($_.IsRetryMode -eq $true) -and ($_.OriginalSessionId -eq $BackupSession9.Id) } ForEach ($RetrySession9 in $RetrySessions9) { [System.Collections.ArrayList]$RetryTaskSessions9 = @($RetrySession9 | Get-VBRTaskSession) ForEach ($RetryTaskSession9 in $RetryTaskSessions9) { $PriorTaskSession9 = $TaskSessions9 | ?{$_.Name -eq $RetryTaskSession9.Name} If ($PriorTaskSession9) { $TaskSessions9.Remove($PriorTaskSession9) } $TaskSessions9.Add($RetryTaskSession9) | Out-Null } } } $TaskSessions9 | Select @{N="JobName9";E={$BackupSession9.JobName}},@{N="SessionName9";E={$_.JobSess.Name}},@{N="JobResult9";E={$_.JobSess.Result}},@{N="JobStart9";E={$_.JobSess.CreationTime}},@{N="JobEnd9";E={$_.JobSess.EndTime}},@{N="Date9";E={$_.JobSess.CreationTime.ToString("yyyy-MM-dd")}},name,@{N="Backup9";E={$_.Status}}#,status } } $EndResult = $Result1+$Result2+$Result3+$Result4+$Result5+$Result6+$Result7+$Result8+$Result9 #This now references through the results to find the relevant result for each VM on each day #It will check whether the backup date is a Sunday and exclude those days, and also change the column name of the Saturday #before to show 'Weekend of ' instead of just the date if ([DateTime]::Today.AddDays($Day8).DayOfWeek -eq "Sunday") { Write-Host "Combined" $bodySummaryRp = $EndResult | Group Name | ForEach { New-Object PSObject -Property @{ Name = $_.Name Backup1 = if ($_.Group[0].Backup1 -ne $null) { ($_.Group[0].Backup1)} elseif ($_.Group[1].Backup1 -ne $null) { ($_.Group[1].Backup1)} elseif ($_.Group[2].Backup1 -ne $null) { ($_.Group[2].Backup1)} elseif ($_.Group[3].Backup1 -ne $null) { ($_.Group[3].Backup1)} elseif ($_.Group[4].Backup1 -ne $null) { ($_.Group[4].Backup1)} elseif ($_.Group[5].Backup1 -ne $null) { ($_.Group[5].Backup1)} elseif ($_.Group[6].Backup1 -ne $null) { ($_.Group[6].Backup1)} elseif ($_.Group[7].Backup1 -ne $null) { ($_.Group[7].Backup1)} elseif ($_.Group[8].Backup1 -ne $null) { ($_.Group[8].Backup1)} elseif ($_.Group[9].Backup1 -ne $null) { ($_.Group[9].Backup1)} elseif ($_.Group[10].Backup1 -ne $null) { ($_.Group[10].Backup1)}; Backup3 = if ($_.Group[0].Backup3 -ne $null) { ($_.Group[0].Backup3)} elseif ($_.Group[1].Backup3 -ne $null) { ($_.Group[1].Backup3)} elseif ($_.Group[2].Backup3 -ne $null) { ($_.Group[2].Backup3)} elseif ($_.Group[3].Backup3 -ne $null) { ($_.Group[3].Backup3)} elseif ($_.Group[4].Backup3 -ne $null) { ($_.Group[4].Backup3)} elseif ($_.Group[5].Backup3 -ne $null) { ($_.Group[5].Backup3)} elseif ($_.Group[6].Backup3 -ne $null) { ($_.Group[6].Backup3)} elseif ($_.Group[7].Backup3 -ne $null) { ($_.Group[7].Backup3)} elseif ($_.Group[8].Backup3 -ne $null) { ($_.Group[8].Backup3)} elseif ($_.Group[9].Backup3 -ne $null) { ($_.Group[9].Backup3)} elseif ($_.Group[10].Backup3 -ne $null) { ($_.Group[10].Backup3)}; Backup4 = if ($_.Group[0].Backup4 -ne $null) { ($_.Group[0].Backup4)} elseif ($_.Group[1].Backup4 -ne $null) { ($_.Group[1].Backup4)} elseif ($_.Group[2].Backup4 -ne $null) { ($_.Group[2].Backup4)} elseif ($_.Group[3].Backup4 -ne $null) { ($_.Group[3].Backup4)} elseif ($_.Group[4].Backup4 -ne $null) { ($_.Group[4].Backup4)} elseif ($_.Group[5].Backup4 -ne $null) { ($_.Group[5].Backup4)} elseif ($_.Group[6].Backup4 -ne $null) { ($_.Group[6].Backup4)} elseif ($_.Group[7].Backup4 -ne $null) { ($_.Group[7].Backup4)} elseif ($_.Group[8].Backup4 -ne $null) { ($_.Group[8].Backup4)} elseif ($_.Group[9].Backup4 -ne $null) { ($_.Group[9].Backup4)} elseif ($_.Group[10].Backup4 -ne $null) { ($_.Group[10].Backup4)}; Backup5 = if ($_.Group[0].Backup5 -ne $null) { ($_.Group[0].Backup5)} elseif ($_.Group[1].Backup5 -ne $null) { ($_.Group[1].Backup5)} elseif ($_.Group[2].Backup5 -ne $null) { ($_.Group[2].Backup5)} elseif ($_.Group[3].Backup5 -ne $null) { ($_.Group[3].Backup5)} elseif ($_.Group[4].Backup5 -ne $null) { ($_.Group[4].Backup5)} elseif ($_.Group[5].Backup5 -ne $null) { ($_.Group[5].Backup5)} elseif ($_.Group[6].Backup5 -ne $null) { ($_.Group[6].Backup5)} elseif ($_.Group[7].Backup5 -ne $null) { ($_.Group[7].Backup5)} elseif ($_.Group[8].Backup5 -ne $null) { ($_.Group[8].Backup5)} elseif ($_.Group[9].Backup5 -ne $null) { ($_.Group[9].Backup5)} elseif ($_.Group[10].Backup5 -ne $null) { ($_.Group[10].Backup5)}; Backup6 = if ($_.Group[0].Backup6 -ne $null) { ($_.Group[0].Backup6)} elseif ($_.Group[1].Backup6 -ne $null) { ($_.Group[1].Backup6)} elseif ($_.Group[2].Backup6 -ne $null) { ($_.Group[2].Backup6)} elseif ($_.Group[3].Backup6 -ne $null) { ($_.Group[3].Backup6)} elseif ($_.Group[4].Backup6 -ne $null) { ($_.Group[4].Backup6)} elseif ($_.Group[5].Backup6 -ne $null) { ($_.Group[5].Backup6)} elseif ($_.Group[6].Backup6 -ne $null) { ($_.Group[6].Backup6)} elseif ($_.Group[7].Backup6 -ne $null) { ($_.Group[7].Backup6)} elseif ($_.Group[8].Backup6 -ne $null) { ($_.Group[8].Backup6)} elseif ($_.Group[9].Backup6 -ne $null) { ($_.Group[9].Backup6)} elseif ($_.Group[10].Backup6 -ne $null) { ($_.Group[10].Backup6)}; Backup7 = if ($_.Group[0].Backup7 -ne $null) { ($_.Group[0].Backup7)} elseif ($_.Group[1].Backup7 -ne $null) { ($_.Group[1].Backup7)} elseif ($_.Group[2].Backup7 -ne $null) { ($_.Group[2].Backup7)} elseif ($_.Group[3].Backup7 -ne $null) { ($_.Group[3].Backup7)} elseif ($_.Group[4].Backup7 -ne $null) { ($_.Group[4].Backup7)} elseif ($_.Group[5].Backup7 -ne $null) { ($_.Group[5].Backup7)} elseif ($_.Group[6].Backup7 -ne $null) { ($_.Group[6].Backup7)} elseif ($_.Group[7].Backup7 -ne $null) { ($_.Group[7].Backup7)} elseif ($_.Group[8].Backup7 -ne $null) { ($_.Group[8].Backup7)} elseif ($_.Group[9].Backup7 -ne $null) { ($_.Group[9].Backup7)} elseif ($_.Group[10].Backup7 -ne $null) { ($_.Group[10].Backup7)}; Backup8 = if ($_.Group[0].Backup8 -ne $null) { ($_.Group[0].Backup8)} elseif ($_.Group[1].Backup8 -ne $null) { ($_.Group[1].Backup8)} elseif ($_.Group[2].Backup8 -ne $null) { ($_.Group[2].Backup8)} elseif ($_.Group[3].Backup8 -ne $null) { ($_.Group[3].Backup8)} elseif ($_.Group[4].Backup8 -ne $null) { ($_.Group[4].Backup8)} elseif ($_.Group[5].Backup8 -ne $null) { ($_.Group[5].Backup8)} elseif ($_.Group[6].Backup8 -ne $null) { ($_.Group[6].Backup8)} elseif ($_.Group[7].Backup8 -ne $null) { ($_.Group[7].Backup8)} elseif ($_.Group[8].Backup8 -ne $null) { ($_.Group[8].Backup8)} elseif ($_.Group[9].Backup8 -ne $null) { ($_.Group[9].Backup8)} elseif ($_.Group[10].Backup8 -ne $null) { ($_.Group[10].Backup8)}; } } | select Name,@{N="Weekend of $Date1";E={$_.Backup1}},@{N="$Date3";E={$_.Backup3}},@{N="$Date4";E={$_.Backup4}},@{N="$Date5";E={$_.Backup5}},@{N="$Date6";E={$_.Backup6}},@{N="$Date7";E={$_.Backup7}},@{N="Weekend of $Date8";E={$_.Backup8}}| Sort Name | ConvertTo-Html -Fragment } elseif ([DateTime]::Today.AddDays($Day7).DayOfWeek -eq "Sunday") { Write-Host "Combined" $ColumnDate = 'Weekend of ' + $Date1 $bodySummaryRp = $EndResult | Group Name | ForEach { New-Object PSObject -Property @{ Name = $_.Name Backup2 = if ($_.Group[0].Backup2 -ne $null) { ($_.Group[0].Backup2)} elseif ($_.Group[1].Backup2 -ne $null) { ($_.Group[1].Backup2)} elseif ($_.Group[2].Backup2 -ne $null) { ($_.Group[2].Backup2)} elseif ($_.Group[3].Backup2 -ne $null) { ($_.Group[3].Backup2)} elseif ($_.Group[4].Backup2 -ne $null) { ($_.Group[4].Backup2)} elseif ($_.Group[5].Backup2 -ne $null) { ($_.Group[5].Backup2)} elseif ($_.Group[6].Backup2 -ne $null) { ($_.Group[6].Backup2)} elseif ($_.Group[7].Backup2 -ne $null) { ($_.Group[7].Backup2)} elseif ($_.Group[8].Backup2 -ne $null) { ($_.Group[8].Backup2)} elseif ($_.Group[9].Backup2 -ne $null) { ($_.Group[9].Backup2)} elseif ($_.Group[10].Backup2 -ne $null) { ($_.Group[10].Backup2)}; Backup4 = if ($_.Group[0].Backup4 -ne $null) { ($_.Group[0].Backup4)} elseif ($_.Group[1].Backup4 -ne $null) { ($_.Group[1].Backup4)} elseif ($_.Group[2].Backup4 -ne $null) { ($_.Group[2].Backup4)} elseif ($_.Group[3].Backup4 -ne $null) { ($_.Group[3].Backup4)} elseif ($_.Group[4].Backup4 -ne $null) { ($_.Group[4].Backup4)} elseif ($_.Group[5].Backup4 -ne $null) { ($_.Group[5].Backup4)} elseif ($_.Group[6].Backup4 -ne $null) { ($_.Group[6].Backup4)} elseif ($_.Group[7].Backup4 -ne $null) { ($_.Group[7].Backup4)} elseif ($_.Group[8].Backup4 -ne $null) { ($_.Group[8].Backup4)} elseif ($_.Group[9].Backup4 -ne $null) { ($_.Group[9].Backup4)} elseif ($_.Group[10].Backup4 -ne $null) { ($_.Group[10].Backup4)}; Backup5 = if ($_.Group[0].Backup5 -ne $null) { ($_.Group[0].Backup5)} elseif ($_.Group[1].Backup5 -ne $null) { ($_.Group[1].Backup5)} elseif ($_.Group[2].Backup5 -ne $null) { ($_.Group[2].Backup5)} elseif ($_.Group[3].Backup5 -ne $null) { ($_.Group[3].Backup5)} elseif ($_.Group[4].Backup5 -ne $null) { ($_.Group[4].Backup5)} elseif ($_.Group[5].Backup5 -ne $null) { ($_.Group[5].Backup5)} elseif ($_.Group[6].Backup5 -ne $null) { ($_.Group[6].Backup5)} elseif ($_.Group[7].Backup5 -ne $null) { ($_.Group[7].Backup5)} elseif ($_.Group[8].Backup5 -ne $null) { ($_.Group[8].Backup5)} elseif ($_.Group[9].Backup5 -ne $null) { ($_.Group[9].Backup5)} elseif ($_.Group[10].Backup5 -ne $null) { ($_.Group[10].Backup5)}; Backup6 = if ($_.Group[0].Backup6 -ne $null) { ($_.Group[0].Backup6)} elseif ($_.Group[1].Backup6 -ne $null) { ($_.Group[1].Backup6)} elseif ($_.Group[2].Backup6 -ne $null) { ($_.Group[2].Backup6)} elseif ($_.Group[3].Backup6 -ne $null) { ($_.Group[3].Backup6)} elseif ($_.Group[4].Backup6 -ne $null) { ($_.Group[4].Backup6)} elseif ($_.Group[5].Backup6 -ne $null) { ($_.Group[5].Backup6)} elseif ($_.Group[6].Backup6 -ne $null) { ($_.Group[6].Backup6)} elseif ($_.Group[7].Backup6 -ne $null) { ($_.Group[7].Backup6)} elseif ($_.Group[8].Backup6 -ne $null) { ($_.Group[8].Backup6)} elseif ($_.Group[9].Backup6 -ne $null) { ($_.Group[9].Backup6)} elseif ($_.Group[10].Backup6 -ne $null) { ($_.Group[10].Backup6)}; Backup7 = if ($_.Group[0].Backup7 -ne $null) { ($_.Group[0].Backup7)} elseif ($_.Group[1].Backup7 -ne $null) { ($_.Group[1].Backup7)} elseif ($_.Group[2].Backup7 -ne $null) { ($_.Group[2].Backup7)} elseif ($_.Group[3].Backup7 -ne $null) { ($_.Group[3].Backup7)} elseif ($_.Group[4].Backup7 -ne $null) { ($_.Group[4].Backup7)} elseif ($_.Group[5].Backup7 -ne $null) { ($_.Group[5].Backup7)} elseif ($_.Group[6].Backup7 -ne $null) { ($_.Group[6].Backup7)} elseif ($_.Group[7].Backup7 -ne $null) { ($_.Group[7].Backup7)} elseif ($_.Group[8].Backup7 -ne $null) { ($_.Group[8].Backup7)} elseif ($_.Group[9].Backup7 -ne $null) { ($_.Group[9].Backup7)} elseif ($_.Group[10].Backup7 -ne $null) { ($_.Group[10].Backup7)}; Backup8 = if ($_.Group[0].Backup8 -ne $null) { ($_.Group[0].Backup8)} elseif ($_.Group[1].Backup8 -ne $null) { ($_.Group[1].Backup8)} elseif ($_.Group[2].Backup8 -ne $null) { ($_.Group[2].Backup8)} elseif ($_.Group[3].Backup8 -ne $null) { ($_.Group[3].Backup8)} elseif ($_.Group[4].Backup8 -ne $null) { ($_.Group[4].Backup8)} elseif ($_.Group[5].Backup8 -ne $null) { ($_.Group[5].Backup8)} elseif ($_.Group[6].Backup8 -ne $null) { ($_.Group[6].Backup8)} elseif ($_.Group[7].Backup8 -ne $null) { ($_.Group[7].Backup8)} elseif ($_.Group[8].Backup8 -ne $null) { ($_.Group[8].Backup8)} elseif ($_.Group[9].Backup8 -ne $null) { ($_.Group[9].Backup8)} elseif ($_.Group[10].Backup8 -ne $null) { ($_.Group[10].Backup8)}; Backup9 = if ($_.Group[0].Backup9 -ne $null) { ($_.Group[0].Backup9)} elseif ($_.Group[1].Backup9 -ne $null) { ($_.Group[1].Backup9)} elseif ($_.Group[2].Backup9 -ne $null) { ($_.Group[2].Backup9)} elseif ($_.Group[3].Backup9 -ne $null) { ($_.Group[3].Backup9)} elseif ($_.Group[4].Backup9 -ne $null) { ($_.Group[4].Backup9)} elseif ($_.Group[5].Backup9 -ne $null) { ($_.Group[5].Backup9)} elseif ($_.Group[6].Backup9 -ne $null) { ($_.Group[6].Backup9)} elseif ($_.Group[7].Backup9 -ne $null) { ($_.Group[7].Backup9)} elseif ($_.Group[8].Backup9 -ne $null) { ($_.Group[8].Backup9)} elseif ($_.Group[9].Backup9 -ne $null) { ($_.Group[9].Backup9)} elseif ($_.Group[10].Backup9 -ne $null) { ($_.Group[10].Backup9)}; } } | Select Name,@{N="Weekend of $Date2";E={$_.Backup1}},@{N="$Date4";E={$_.Backup4}},@{N="$Date5";E={$_.Backup5}},@{N="$Date6";E={$_.Backup6}},@{N="$Date7";E={$_.Backup7}},@{N="$Date8";E={$_.Backup8}},@{N="Weekend of $Date9";E={$_.Backup9}} | Sort Name | ConvertTo-Html -Fragment # | set-cellcolor -Property $Date3 -Color red -Filter "$Date3 -like 'Failed'" | set-cellcolor -Property $Date3 -Color '#00ff00' -Filter "$Date3 -like 'Success'" | set-cellcolor -Property $Date3 -Color '#FFFF00' -Filter "$Date3 -like 'Warning'" #set-cellcolor -Property $Date3 -Color red -Filter "$Date3 -like 'Failed'" | set-cellcolor -Property $Date4 -Color red -Filter "$Date4 -like 'Failed'" | set-cellcolor -Property "Weekend of $Date1" -Color '#00ff00' -Filter "'Weekend of $Date1' -like 'Success'" | set-cellcolor -Property $Date3 -Color '#00ff00' -Filter "$Date3 -like 'Success'" | set-cellcolor -Property $Date4 -Color '#00ff00' -Filter "$Date4 -like 'Success'" | set-cellcolor -Property "Weekend of $Date1" -Color '#FFFF00' -Filter "'Weekend of $Date1' -like 'Warning'" | Out-File "D:\Scripts\New-BackupCheck\VeeamBackupReport.htm" } elseif ([DateTime]::Today.AddDays($Day6).DayOfWeek -eq "Sunday") { Write-Host "Combined" $ColumnDate = 'Weekend of ' + $Date2 $bodySummaryRp = $EndResult | Group Name | ForEach { New-Object PSObject -Property @{ Name = $_.Name Backup2 = if ($_.Group[0].Backup2 -ne $null) { ($_.Group[0].Backup2)} elseif ($_.Group[1].Backup2 -ne $null) { ($_.Group[1].Backup2)} elseif ($_.Group[2].Backup2 -ne $null) { ($_.Group[2].Backup2)} elseif ($_.Group[3].Backup2 -ne $null) { ($_.Group[3].Backup2)} elseif ($_.Group[4].Backup2 -ne $null) { ($_.Group[4].Backup2)} elseif ($_.Group[5].Backup2 -ne $null) { ($_.Group[5].Backup2)} elseif ($_.Group[6].Backup2 -ne $null) { ($_.Group[6].Backup2)} elseif ($_.Group[7].Backup2 -ne $null) { ($_.Group[7].Backup2)} elseif ($_.Group[8].Backup2 -ne $null) { ($_.Group[8].Backup2)} elseif ($_.Group[9].Backup2 -ne $null) { ($_.Group[9].Backup2)} elseif ($_.Group[10].Backup2 -ne $null) { ($_.Group[10].Backup2)}; Backup3 = if ($_.Group[0].Backup3 -ne $null) { ($_.Group[0].Backup3)} elseif ($_.Group[1].Backup3 -ne $null) { ($_.Group[1].Backup3)} elseif ($_.Group[2].Backup3 -ne $null) { ($_.Group[2].Backup3)} elseif ($_.Group[3].Backup3 -ne $null) { ($_.Group[3].Backup3)} elseif ($_.Group[4].Backup3 -ne $null) { ($_.Group[4].Backup3)} elseif ($_.Group[5].Backup3 -ne $null) { ($_.Group[5].Backup3)} elseif ($_.Group[6].Backup3 -ne $null) { ($_.Group[6].Backup3)} elseif ($_.Group[7].Backup3 -ne $null) { ($_.Group[7].Backup3)} elseif ($_.Group[8].Backup3 -ne $null) { ($_.Group[8].Backup3)} elseif ($_.Group[9].Backup3 -ne $null) { ($_.Group[9].Backup3)} elseif ($_.Group[10].Backup3 -ne $null) { ($_.Group[10].Backup3)}; Backup5 = if ($_.Group[0].Backup5 -ne $null) { ($_.Group[0].Backup5)} elseif ($_.Group[1].Backup5 -ne $null) { ($_.Group[1].Backup5)} elseif ($_.Group[2].Backup5 -ne $null) { ($_.Group[2].Backup5)} elseif ($_.Group[3].Backup5 -ne $null) { ($_.Group[3].Backup5)} elseif ($_.Group[4].Backup5 -ne $null) { ($_.Group[4].Backup5)} elseif ($_.Group[5].Backup5 -ne $null) { ($_.Group[5].Backup5)} elseif ($_.Group[6].Backup5 -ne $null) { ($_.Group[6].Backup5)} elseif ($_.Group[7].Backup5 -ne $null) { ($_.Group[7].Backup5)} elseif ($_.Group[8].Backup5 -ne $null) { ($_.Group[8].Backup5)} elseif ($_.Group[9].Backup5 -ne $null) { ($_.Group[9].Backup5)} elseif ($_.Group[10].Backup5 -ne $null) { ($_.Group[10].Backup5)}; Backup6 = if ($_.Group[0].Backup6 -ne $null) { ($_.Group[0].Backup6)} elseif ($_.Group[1].Backup6 -ne $null) { ($_.Group[1].Backup6)} elseif ($_.Group[2].Backup6 -ne $null) { ($_.Group[2].Backup6)} elseif ($_.Group[3].Backup6 -ne $null) { ($_.Group[3].Backup6)} elseif ($_.Group[4].Backup6 -ne $null) { ($_.Group[4].Backup6)} elseif ($_.Group[5].Backup6 -ne $null) { ($_.Group[5].Backup6)} elseif ($_.Group[6].Backup6 -ne $null) { ($_.Group[6].Backup6)} elseif ($_.Group[7].Backup6 -ne $null) { ($_.Group[7].Backup6)} elseif ($_.Group[8].Backup6 -ne $null) { ($_.Group[8].Backup6)} elseif ($_.Group[9].Backup6 -ne $null) { ($_.Group[9].Backup6)} elseif ($_.Group[10].Backup6 -ne $null) { ($_.Group[10].Backup6)}; Backup7 = if ($_.Group[0].Backup7 -ne $null) { ($_.Group[0].Backup7)} elseif ($_.Group[1].Backup7 -ne $null) { ($_.Group[1].Backup7)} elseif ($_.Group[2].Backup7 -ne $null) { ($_.Group[2].Backup7)} elseif ($_.Group[3].Backup7 -ne $null) { ($_.Group[3].Backup7)} elseif ($_.Group[4].Backup7 -ne $null) { ($_.Group[4].Backup7)} elseif ($_.Group[5].Backup7 -ne $null) { ($_.Group[5].Backup7)} elseif ($_.Group[6].Backup7 -ne $null) { ($_.Group[6].Backup7)} elseif ($_.Group[7].Backup7 -ne $null) { ($_.Group[7].Backup7)} elseif ($_.Group[8].Backup7 -ne $null) { ($_.Group[8].Backup7)} elseif ($_.Group[9].Backup7 -ne $null) { ($_.Group[9].Backup7)} elseif ($_.Group[10].Backup7 -ne $null) { ($_.Group[10].Backup7)}; Backup8 = if ($_.Group[0].Backup8 -ne $null) { ($_.Group[0].Backup8)} elseif ($_.Group[1].Backup8 -ne $null) { ($_.Group[1].Backup8)} elseif ($_.Group[2].Backup8 -ne $null) { ($_.Group[2].Backup8)} elseif ($_.Group[3].Backup8 -ne $null) { ($_.Group[3].Backup8)} elseif ($_.Group[4].Backup8 -ne $null) { ($_.Group[4].Backup8)} elseif ($_.Group[5].Backup8 -ne $null) { ($_.Group[5].Backup8)} elseif ($_.Group[6].Backup8 -ne $null) { ($_.Group[6].Backup8)} elseif ($_.Group[7].Backup8 -ne $null) { ($_.Group[7].Backup8)} elseif ($_.Group[8].Backup8 -ne $null) { ($_.Group[8].Backup8)} elseif ($_.Group[9].Backup8 -ne $null) { ($_.Group[9].Backup8)} elseif ($_.Group[10].Backup8 -ne $null) { ($_.Group[10].Backup8)}; Backup9 = if ($_.Group[0].Backup9 -ne $null) { ($_.Group[0].Backup9)} elseif ($_.Group[1].Backup9 -ne $null) { ($_.Group[1].Backup9)} elseif ($_.Group[2].Backup9 -ne $null) { ($_.Group[2].Backup9)} elseif ($_.Group[3].Backup9 -ne $null) { ($_.Group[3].Backup9)} elseif ($_.Group[4].Backup9 -ne $null) { ($_.Group[4].Backup9)} elseif ($_.Group[5].Backup9 -ne $null) { ($_.Group[5].Backup9)} elseif ($_.Group[6].Backup9 -ne $null) { ($_.Group[6].Backup9)} elseif ($_.Group[7].Backup9 -ne $null) { ($_.Group[7].Backup9)} elseif ($_.Group[8].Backup9 -ne $null) { ($_.Group[8].Backup9)} elseif ($_.Group[9].Backup9 -ne $null) { ($_.Group[9].Backup9)} elseif ($_.Group[10].Backup9 -ne $null) { ($_.Group[10].Backup9)}; } } | select Name,@{N="$Date2";E={$_.Backup2}},@{N="Weekend of $Date3";E={$_.Backup3}},@{N="$Date5";E={$_.Backup5}},@{N="$Date6";E={$_.Backup6}},@{N="$Date7";E={$_.Backup7}},@{N="$Date8";E={$_.Backup8}},@{N="$Date9";E={$_.Backup9}} | Sort Name | ConvertTo-Html -Fragment #| set-cellcolor -Property $Date1 -Color red -Filter "$Date1 -like 'Failed'" | set-cellcolor -Property $Date1 -Color '#00ff00' -Filter "$Date1 -like 'Success'" | set-cellcolor -Property $Date1 -Color '#FFFF00' -Filter "$Date1 -like 'Warning'" } elseif ([DateTime]::Today.AddDays($Day5).DayOfWeek -eq "Sunday") { Write-Host "Combined" $bodySummaryRp = $EndResult | Group Name | ForEach { New-Object PSObject -Property @{ Name = $_.Name Backup2 = if ($_.Group[0].Backup2 -ne $null) { ($_.Group[0].Backup2)} elseif ($_.Group[1].Backup2 -ne $null) { ($_.Group[1].Backup2)} elseif ($_.Group[2].Backup2 -ne $null) { ($_.Group[2].Backup2)} elseif ($_.Group[3].Backup2 -ne $null) { ($_.Group[3].Backup2)} elseif ($_.Group[4].Backup2 -ne $null) { ($_.Group[4].Backup2)} elseif ($_.Group[5].Backup2 -ne $null) { ($_.Group[5].Backup2)} elseif ($_.Group[6].Backup2 -ne $null) { ($_.Group[6].Backup2)} elseif ($_.Group[7].Backup2 -ne $null) { ($_.Group[7].Backup2)} elseif ($_.Group[8].Backup2 -ne $null) { ($_.Group[8].Backup2)} elseif ($_.Group[9].Backup2 -ne $null) { ($_.Group[9].Backup2)} elseif ($_.Group[10].Backup2 -ne $null) { ($_.Group[10].Backup2)}; Backup3 = if ($_.Group[0].Backup3 -ne $null) { ($_.Group[0].Backup3)} elseif ($_.Group[1].Backup3 -ne $null) { ($_.Group[1].Backup3)} elseif ($_.Group[2].Backup3 -ne $null) { ($_.Group[2].Backup3)} elseif ($_.Group[3].Backup3 -ne $null) { ($_.Group[3].Backup3)} elseif ($_.Group[4].Backup3 -ne $null) { ($_.Group[4].Backup3)} elseif ($_.Group[5].Backup3 -ne $null) { ($_.Group[5].Backup3)} elseif ($_.Group[6].Backup3 -ne $null) { ($_.Group[6].Backup3)} elseif ($_.Group[7].Backup3 -ne $null) { ($_.Group[7].Backup3)} elseif ($_.Group[8].Backup3 -ne $null) { ($_.Group[8].Backup3)} elseif ($_.Group[9].Backup3 -ne $null) { ($_.Group[9].Backup3)} elseif ($_.Group[10].Backup3 -ne $null) { ($_.Group[10].Backup3)}; Backup4 = if ($_.Group[0].Backup4 -ne $null) { ($_.Group[0].Backup4)} elseif ($_.Group[1].Backup4 -ne $null) { ($_.Group[1].Backup4)} elseif ($_.Group[2].Backup4 -ne $null) { ($_.Group[2].Backup4)} elseif ($_.Group[3].Backup4 -ne $null) { ($_.Group[3].Backup4)} elseif ($_.Group[4].Backup4 -ne $null) { ($_.Group[4].Backup4)} elseif ($_.Group[5].Backup4 -ne $null) { ($_.Group[5].Backup4)} elseif ($_.Group[6].Backup4 -ne $null) { ($_.Group[6].Backup4)} elseif ($_.Group[7].Backup4 -ne $null) { ($_.Group[7].Backup4)} elseif ($_.Group[8].Backup4 -ne $null) { ($_.Group[8].Backup4)} elseif ($_.Group[9].Backup4 -ne $null) { ($_.Group[9].Backup4)} elseif ($_.Group[10].Backup4 -ne $null) { ($_.Group[10].Backup4)}; Backup6 = if ($_.Group[0].Backup6 -ne $null) { ($_.Group[0].Backup6)} elseif ($_.Group[1].Backup6 -ne $null) { ($_.Group[1].Backup6)} elseif ($_.Group[2].Backup6 -ne $null) { ($_.Group[2].Backup6)} elseif ($_.Group[3].Backup6 -ne $null) { ($_.Group[3].Backup6)} elseif ($_.Group[4].Backup6 -ne $null) { ($_.Group[4].Backup6)} elseif ($_.Group[5].Backup6 -ne $null) { ($_.Group[5].Backup6)} elseif ($_.Group[6].Backup6 -ne $null) { ($_.Group[6].Backup6)} elseif ($_.Group[7].Backup6 -ne $null) { ($_.Group[7].Backup6)} elseif ($_.Group[8].Backup6 -ne $null) { ($_.Group[8].Backup6)} elseif ($_.Group[9].Backup6 -ne $null) { ($_.Group[9].Backup6)} elseif ($_.Group[10].Backup6 -ne $null) { ($_.Group[10].Backup6)}; Backup7 = if ($_.Group[0].Backup7 -ne $null) { ($_.Group[0].Backup7)} elseif ($_.Group[1].Backup7 -ne $null) { ($_.Group[1].Backup7)} elseif ($_.Group[2].Backup7 -ne $null) { ($_.Group[2].Backup7)} elseif ($_.Group[3].Backup7 -ne $null) { ($_.Group[3].Backup7)} elseif ($_.Group[4].Backup7 -ne $null) { ($_.Group[4].Backup7)} elseif ($_.Group[5].Backup7 -ne $null) { ($_.Group[5].Backup7)} elseif ($_.Group[6].Backup7 -ne $null) { ($_.Group[6].Backup7)} elseif ($_.Group[7].Backup7 -ne $null) { ($_.Group[7].Backup7)} elseif ($_.Group[8].Backup7 -ne $null) { ($_.Group[8].Backup7)} elseif ($_.Group[9].Backup7 -ne $null) { ($_.Group[9].Backup7)} elseif ($_.Group[10].Backup7 -ne $null) { ($_.Group[10].Backup7)}; Backup8 = if ($_.Group[0].Backup8 -ne $null) { ($_.Group[0].Backup8)} elseif ($_.Group[1].Backup8 -ne $null) { ($_.Group[1].Backup8)} elseif ($_.Group[2].Backup8 -ne $null) { ($_.Group[2].Backup8)} elseif ($_.Group[3].Backup8 -ne $null) { ($_.Group[3].Backup8)} elseif ($_.Group[4].Backup8 -ne $null) { ($_.Group[4].Backup8)} elseif ($_.Group[5].Backup8 -ne $null) { ($_.Group[5].Backup8)} elseif ($_.Group[6].Backup8 -ne $null) { ($_.Group[6].Backup8)} elseif ($_.Group[7].Backup8 -ne $null) { ($_.Group[7].Backup8)} elseif ($_.Group[8].Backup8 -ne $null) { ($_.Group[8].Backup8)} elseif ($_.Group[9].Backup8 -ne $null) { ($_.Group[9].Backup8)} elseif ($_.Group[10].Backup8 -ne $null) { ($_.Group[10].Backup8)}; Backup9 = if ($_.Group[0].Backup9 -ne $null) { ($_.Group[0].Backup9)} elseif ($_.Group[1].Backup9 -ne $null) { ($_.Group[1].Backup9)} elseif ($_.Group[2].Backup9 -ne $null) { ($_.Group[2].Backup9)} elseif ($_.Group[3].Backup9 -ne $null) { ($_.Group[3].Backup9)} elseif ($_.Group[4].Backup9 -ne $null) { ($_.Group[4].Backup9)} elseif ($_.Group[5].Backup9 -ne $null) { ($_.Group[5].Backup9)} elseif ($_.Group[6].Backup9 -ne $null) { ($_.Group[6].Backup9)} elseif ($_.Group[7].Backup9 -ne $null) { ($_.Group[7].Backup9)} elseif ($_.Group[8].Backup9 -ne $null) { ($_.Group[8].Backup9)} elseif ($_.Group[9].Backup9 -ne $null) { ($_.Group[9].Backup9)} elseif ($_.Group[10].Backup9 -ne $null) { ($_.Group[10].Backup9)}; } } | select Name,@{N="$Date2";E={$_.Backup2}},@{N="$Date3";E={$_.Backup3}},@{N="Weekend of $Date4";E={$_.Backup4}},@{N="$Date6";E={$_.Backup6}},@{N="$Date7";E={$_.Backup7}},@{N="$Date8";E={$_.Backup8}},@{N="$Date9";E={$_.Backup9}} | Sort Name | ConvertTo-Html -Fragment #| set-cellcolor -Property $Date1 -Color red -Filter "$Date1 -like 'Failed'" | set-cellcolor -Property $Date1 -Color '#00ff00' -Filter "$Date1 -like 'Success'" | set-cellcolor -Property $Date1 -Color '#FFFF00' -Filter "$Date1 -like 'Warning'" } elseif ([DateTime]::Today.AddDays($Day4).DayOfWeek -eq "Sunday") { Write-Host "Combined" $bodySummaryRp = $EndResult | Group Name | ForEach { New-Object PSObject -Property @{ Name = $_.Name Backup2 = if ($_.Group[0].Backup2 -ne $null) { ($_.Group[0].Backup2)} elseif ($_.Group[1].Backup2 -ne $null) { ($_.Group[1].Backup2)} elseif ($_.Group[2].Backup2 -ne $null) { ($_.Group[2].Backup2)} elseif ($_.Group[3].Backup2 -ne $null) { ($_.Group[3].Backup2)} elseif ($_.Group[4].Backup2 -ne $null) { ($_.Group[4].Backup2)} elseif ($_.Group[5].Backup2 -ne $null) { ($_.Group[5].Backup2)} elseif ($_.Group[6].Backup2 -ne $null) { ($_.Group[6].Backup2)} elseif ($_.Group[7].Backup2 -ne $null) { ($_.Group[7].Backup2)} elseif ($_.Group[8].Backup2 -ne $null) { ($_.Group[8].Backup2)} elseif ($_.Group[9].Backup2 -ne $null) { ($_.Group[9].Backup2)} elseif ($_.Group[10].Backup2 -ne $null) { ($_.Group[10].Backup2)}; Backup3 = if ($_.Group[0].Backup3 -ne $null) { ($_.Group[0].Backup3)} elseif ($_.Group[1].Backup3 -ne $null) { ($_.Group[1].Backup3)} elseif ($_.Group[2].Backup3 -ne $null) { ($_.Group[2].Backup3)} elseif ($_.Group[3].Backup3 -ne $null) { ($_.Group[3].Backup3)} elseif ($_.Group[4].Backup3 -ne $null) { ($_.Group[4].Backup3)} elseif ($_.Group[5].Backup3 -ne $null) { ($_.Group[5].Backup3)} elseif ($_.Group[6].Backup3 -ne $null) { ($_.Group[6].Backup3)} elseif ($_.Group[7].Backup3 -ne $null) { ($_.Group[7].Backup3)} elseif ($_.Group[8].Backup3 -ne $null) { ($_.Group[8].Backup3)} elseif ($_.Group[9].Backup3 -ne $null) { ($_.Group[9].Backup3)} elseif ($_.Group[10].Backup3 -ne $null) { ($_.Group[10].Backup3)}; Backup4 = if ($_.Group[0].Backup4 -ne $null) { ($_.Group[0].Backup4)} elseif ($_.Group[1].Backup4 -ne $null) { ($_.Group[1].Backup4)} elseif ($_.Group[2].Backup4 -ne $null) { ($_.Group[2].Backup4)} elseif ($_.Group[3].Backup4 -ne $null) { ($_.Group[3].Backup4)} elseif ($_.Group[4].Backup4 -ne $null) { ($_.Group[4].Backup4)} elseif ($_.Group[5].Backup4 -ne $null) { ($_.Group[5].Backup4)} elseif ($_.Group[6].Backup4 -ne $null) { ($_.Group[6].Backup4)} elseif ($_.Group[7].Backup4 -ne $null) { ($_.Group[7].Backup4)} elseif ($_.Group[8].Backup4 -ne $null) { ($_.Group[8].Backup4)} elseif ($_.Group[9].Backup4 -ne $null) { ($_.Group[9].Backup4)} elseif ($_.Group[10].Backup4 -ne $null) { ($_.Group[10].Backup4)}; Backup5 = if ($_.Group[0].Backup5 -ne $null) { ($_.Group[0].Backup5)} elseif ($_.Group[1].Backup5 -ne $null) { ($_.Group[1].Backup5)} elseif ($_.Group[2].Backup5 -ne $null) { ($_.Group[2].Backup5)} elseif ($_.Group[3].Backup5 -ne $null) { ($_.Group[3].Backup5)} elseif ($_.Group[4].Backup5 -ne $null) { ($_.Group[4].Backup5)} elseif ($_.Group[5].Backup5 -ne $null) { ($_.Group[5].Backup5)} elseif ($_.Group[6].Backup5 -ne $null) { ($_.Group[6].Backup5)} elseif ($_.Group[7].Backup5 -ne $null) { ($_.Group[7].Backup5)} elseif ($_.Group[8].Backup5 -ne $null) { ($_.Group[8].Backup5)} elseif ($_.Group[9].Backup5 -ne $null) { ($_.Group[9].Backup5)} elseif ($_.Group[10].Backup5 -ne $null) { ($_.Group[10].Backup5)}; Backup7 = if ($_.Group[0].Backup7 -ne $null) { ($_.Group[0].Backup7)} elseif ($_.Group[1].Backup7 -ne $null) { ($_.Group[1].Backup7)} elseif ($_.Group[2].Backup7 -ne $null) { ($_.Group[2].Backup7)} elseif ($_.Group[3].Backup7 -ne $null) { ($_.Group[3].Backup7)} elseif ($_.Group[4].Backup7 -ne $null) { ($_.Group[4].Backup7)} elseif ($_.Group[5].Backup7 -ne $null) { ($_.Group[5].Backup7)} elseif ($_.Group[6].Backup7 -ne $null) { ($_.Group[6].Backup7)} elseif ($_.Group[7].Backup7 -ne $null) { ($_.Group[7].Backup7)} elseif ($_.Group[8].Backup7 -ne $null) { ($_.Group[8].Backup7)} elseif ($_.Group[9].Backup7 -ne $null) { ($_.Group[9].Backup7)} elseif ($_.Group[10].Backup7 -ne $null) { ($_.Group[10].Backup7)}; Backup8 = if ($_.Group[0].Backup8 -ne $null) { ($_.Group[0].Backup8)} elseif ($_.Group[1].Backup8 -ne $null) { ($_.Group[1].Backup8)} elseif ($_.Group[2].Backup8 -ne $null) { ($_.Group[2].Backup8)} elseif ($_.Group[3].Backup8 -ne $null) { ($_.Group[3].Backup8)} elseif ($_.Group[4].Backup8 -ne $null) { ($_.Group[4].Backup8)} elseif ($_.Group[5].Backup8 -ne $null) { ($_.Group[5].Backup8)} elseif ($_.Group[6].Backup8 -ne $null) { ($_.Group[6].Backup8)} elseif ($_.Group[7].Backup8 -ne $null) { ($_.Group[7].Backup8)} elseif ($_.Group[8].Backup8 -ne $null) { ($_.Group[8].Backup8)} elseif ($_.Group[9].Backup8 -ne $null) { ($_.Group[9].Backup8)} elseif ($_.Group[10].Backup8 -ne $null) { ($_.Group[10].Backup8)}; Backup9 = if ($_.Group[0].Backup9 -ne $null) { ($_.Group[0].Backup9)} elseif ($_.Group[1].Backup9 -ne $null) { ($_.Group[1].Backup9)} elseif ($_.Group[2].Backup9 -ne $null) { ($_.Group[2].Backup9)} elseif ($_.Group[3].Backup9 -ne $null) { ($_.Group[3].Backup9)} elseif ($_.Group[4].Backup9 -ne $null) { ($_.Group[4].Backup9)} elseif ($_.Group[5].Backup9 -ne $null) { ($_.Group[5].Backup9)} elseif ($_.Group[6].Backup9 -ne $null) { ($_.Group[6].Backup9)} elseif ($_.Group[7].Backup9 -ne $null) { ($_.Group[7].Backup9)} elseif ($_.Group[8].Backup9 -ne $null) { ($_.Group[8].Backup9)} elseif ($_.Group[9].Backup9 -ne $null) { ($_.Group[9].Backup9)} elseif ($_.Group[10].Backup9 -ne $null) { ($_.Group[10].Backup9)}; } } | select Name,@{N="$Date2";E={$_.Backup2}},@{N="$Date3";E={$_.Backup3}},@{N="$Date4";E={$_.Backup4}},@{N="Weekend of $Date5";E={$_.Backup5}},@{N="$Date7";E={$_.Backup7}},@{N="$Date8";E={$_.Backup8}},@{N="$Date9";E={$_.Backup9}} | Sort Name | ConvertTo-Html -Fragment #| set-cellcolor -Property $Date1 -Color red -Filter "$Date1 -like 'Failed'" | set-cellcolor -Property $Date1 -Color '#00ff00' -Filter "$Date1 -like 'Success'" | set-cellcolor -Property $Date1 -Color '#FFFF00' -Filter "$Date1 -like 'Warning'" } elseif ([DateTime]::Today.AddDays($Day3).DayOfWeek -eq "Sunday") { Write-Host "Combined" $bodySummaryRp = $EndResult | Group Name | ForEach { New-Object PSObject -Property @{ Name = $_.Name Backup2 = if ($_.Group[0].Backup2 -ne $null) { ($_.Group[0].Backup2)} elseif ($_.Group[1].Backup2 -ne $null) { ($_.Group[1].Backup2)} elseif ($_.Group[2].Backup2 -ne $null) { ($_.Group[2].Backup2)} elseif ($_.Group[3].Backup2 -ne $null) { ($_.Group[3].Backup2)} elseif ($_.Group[4].Backup2 -ne $null) { ($_.Group[4].Backup2)} elseif ($_.Group[5].Backup2 -ne $null) { ($_.Group[5].Backup2)} elseif ($_.Group[6].Backup2 -ne $null) { ($_.Group[6].Backup2)} elseif ($_.Group[7].Backup2 -ne $null) { ($_.Group[7].Backup2)} elseif ($_.Group[8].Backup2 -ne $null) { ($_.Group[8].Backup2)} elseif ($_.Group[9].Backup2 -ne $null) { ($_.Group[9].Backup2)} elseif ($_.Group[10].Backup2 -ne $null) { ($_.Group[10].Backup2)}; Backup3 = if ($_.Group[0].Backup3 -ne $null) { ($_.Group[0].Backup3)} elseif ($_.Group[1].Backup3 -ne $null) { ($_.Group[1].Backup3)} elseif ($_.Group[2].Backup3 -ne $null) { ($_.Group[2].Backup3)} elseif ($_.Group[3].Backup3 -ne $null) { ($_.Group[3].Backup3)} elseif ($_.Group[4].Backup3 -ne $null) { ($_.Group[4].Backup3)} elseif ($_.Group[5].Backup3 -ne $null) { ($_.Group[5].Backup3)} elseif ($_.Group[6].Backup3 -ne $null) { ($_.Group[6].Backup3)} elseif ($_.Group[7].Backup3 -ne $null) { ($_.Group[7].Backup3)} elseif ($_.Group[8].Backup3 -ne $null) { ($_.Group[8].Backup3)} elseif ($_.Group[9].Backup3 -ne $null) { ($_.Group[9].Backup3)} elseif ($_.Group[10].Backup3 -ne $null) { ($_.Group[10].Backup3)}; Backup4 = if ($_.Group[0].Backup4 -ne $null) { ($_.Group[0].Backup4)} elseif ($_.Group[1].Backup4 -ne $null) { ($_.Group[1].Backup4)} elseif ($_.Group[2].Backup4 -ne $null) { ($_.Group[2].Backup4)} elseif ($_.Group[3].Backup4 -ne $null) { ($_.Group[3].Backup4)} elseif ($_.Group[4].Backup4 -ne $null) { ($_.Group[4].Backup4)} elseif ($_.Group[5].Backup4 -ne $null) { ($_.Group[5].Backup4)} elseif ($_.Group[6].Backup4 -ne $null) { ($_.Group[6].Backup4)} elseif ($_.Group[7].Backup4 -ne $null) { ($_.Group[7].Backup4)} elseif ($_.Group[8].Backup4 -ne $null) { ($_.Group[8].Backup4)} elseif ($_.Group[9].Backup4 -ne $null) { ($_.Group[9].Backup4)} elseif ($_.Group[10].Backup4 -ne $null) { ($_.Group[10].Backup4)}; Backup5 = if ($_.Group[0].Backup5 -ne $null) { ($_.Group[0].Backup5)} elseif ($_.Group[1].Backup5 -ne $null) { ($_.Group[1].Backup5)} elseif ($_.Group[2].Backup5 -ne $null) { ($_.Group[2].Backup5)} elseif ($_.Group[3].Backup5 -ne $null) { ($_.Group[3].Backup5)} elseif ($_.Group[4].Backup5 -ne $null) { ($_.Group[4].Backup5)} elseif ($_.Group[5].Backup5 -ne $null) { ($_.Group[5].Backup5)} elseif ($_.Group[6].Backup5 -ne $null) { ($_.Group[6].Backup5)} elseif ($_.Group[7].Backup5 -ne $null) { ($_.Group[7].Backup5)} elseif ($_.Group[8].Backup5 -ne $null) { ($_.Group[8].Backup5)} elseif ($_.Group[9].Backup5 -ne $null) { ($_.Group[9].Backup5)} elseif ($_.Group[10].Backup5 -ne $null) { ($_.Group[10].Backup5)}; Backup6 = if ($_.Group[0].Backup6 -ne $null) { ($_.Group[0].Backup6)} elseif ($_.Group[1].Backup6 -ne $null) { ($_.Group[1].Backup6)} elseif ($_.Group[2].Backup6 -ne $null) { ($_.Group[2].Backup6)} elseif ($_.Group[3].Backup6 -ne $null) { ($_.Group[3].Backup6)} elseif ($_.Group[4].Backup6 -ne $null) { ($_.Group[4].Backup6)} elseif ($_.Group[5].Backup6 -ne $null) { ($_.Group[5].Backup6)} elseif ($_.Group[6].Backup6 -ne $null) { ($_.Group[6].Backup6)} elseif ($_.Group[7].Backup6 -ne $null) { ($_.Group[7].Backup6)} elseif ($_.Group[8].Backup6 -ne $null) { ($_.Group[8].Backup6)} elseif ($_.Group[9].Backup6 -ne $null) { ($_.Group[9].Backup6)} elseif ($_.Group[10].Backup6 -ne $null) { ($_.Group[10].Backup6)}; Backup8 = if ($_.Group[0].Backup8 -ne $null) { ($_.Group[0].Backup8)} elseif ($_.Group[1].Backup8 -ne $null) { ($_.Group[1].Backup8)} elseif ($_.Group[2].Backup8 -ne $null) { ($_.Group[2].Backup8)} elseif ($_.Group[3].Backup8 -ne $null) { ($_.Group[3].Backup8)} elseif ($_.Group[4].Backup8 -ne $null) { ($_.Group[4].Backup8)} elseif ($_.Group[5].Backup8 -ne $null) { ($_.Group[5].Backup8)} elseif ($_.Group[6].Backup8 -ne $null) { ($_.Group[6].Backup8)} elseif ($_.Group[7].Backup8 -ne $null) { ($_.Group[7].Backup8)} elseif ($_.Group[8].Backup8 -ne $null) { ($_.Group[8].Backup8)} elseif ($_.Group[9].Backup8 -ne $null) { ($_.Group[9].Backup8)} elseif ($_.Group[10].Backup8 -ne $null) { ($_.Group[10].Backup8)}; Backup9 = if ($_.Group[0].Backup9 -ne $null) { ($_.Group[0].Backup9)} elseif ($_.Group[1].Backup9 -ne $null) { ($_.Group[1].Backup9)} elseif ($_.Group[2].Backup9 -ne $null) { ($_.Group[2].Backup9)} elseif ($_.Group[3].Backup9 -ne $null) { ($_.Group[3].Backup9)} elseif ($_.Group[4].Backup9 -ne $null) { ($_.Group[4].Backup9)} elseif ($_.Group[5].Backup9 -ne $null) { ($_.Group[5].Backup9)} elseif ($_.Group[6].Backup9 -ne $null) { ($_.Group[6].Backup9)} elseif ($_.Group[7].Backup9 -ne $null) { ($_.Group[7].Backup9)} elseif ($_.Group[8].Backup9 -ne $null) { ($_.Group[8].Backup9)} elseif ($_.Group[9].Backup9 -ne $null) { ($_.Group[9].Backup9)} elseif ($_.Group[10].Backup9 -ne $null) { ($_.Group[10].Backup9)}; } } | select Name,@{N="$Date2";E={$_.Backup2}},@{N="$Date3";E={$_.Backup3}},@{N="$Date4";E={$_.Backup4}},@{N="$Date5";E={$_.Backup5}},@{N="Weekend of $Date6";E={$_.Backup6}},@{N="$Date8";E={$_.Backup8}},@{N="$Date9";E={$_.Backup9}} | Sort Name | ConvertTo-Html -Fragment #| set-cellcolor -Property $Date1 -Color red -Filter "$Date1 -like 'Failed'" | set-cellcolor -Property $Date1 -Color '#00ff00' -Filter "$Date1 -like 'Success'" | set-cellcolor -Property $Date1 -Color '#FFFF00' -Filter "$Date1 -like 'Warning'" } elseif ([DateTime]::Today.AddDays($Day2).DayOfWeek -eq "Sunday") { Write-Host "Combined" $bodySummaryRp = $EndResult | Group Name | ForEach { New-Object PSObject -Property @{ Name = $_.Name Backup2 = if ($_.Group[0].Backup2 -ne $null) { ($_.Group[0].Backup2)} elseif ($_.Group[1].Backup2 -ne $null) { ($_.Group[1].Backup2)} elseif ($_.Group[2].Backup2 -ne $null) { ($_.Group[2].Backup2)} elseif ($_.Group[3].Backup2 -ne $null) { ($_.Group[3].Backup2)} elseif ($_.Group[4].Backup2 -ne $null) { ($_.Group[4].Backup2)} elseif ($_.Group[5].Backup2 -ne $null) { ($_.Group[5].Backup2)} elseif ($_.Group[6].Backup2 -ne $null) { ($_.Group[6].Backup2)} elseif ($_.Group[7].Backup2 -ne $null) { ($_.Group[7].Backup2)} elseif ($_.Group[8].Backup2 -ne $null) { ($_.Group[8].Backup2)} elseif ($_.Group[9].Backup2 -ne $null) { ($_.Group[9].Backup2)} elseif ($_.Group[10].Backup2 -ne $null) { ($_.Group[10].Backup2)}; Backup3 = if ($_.Group[0].Backup3 -ne $null) { ($_.Group[0].Backup3)} elseif ($_.Group[1].Backup3 -ne $null) { ($_.Group[1].Backup3)} elseif ($_.Group[2].Backup3 -ne $null) { ($_.Group[2].Backup3)} elseif ($_.Group[3].Backup3 -ne $null) { ($_.Group[3].Backup3)} elseif ($_.Group[4].Backup3 -ne $null) { ($_.Group[4].Backup3)} elseif ($_.Group[5].Backup3 -ne $null) { ($_.Group[5].Backup3)} elseif ($_.Group[6].Backup3 -ne $null) { ($_.Group[6].Backup3)} elseif ($_.Group[7].Backup3 -ne $null) { ($_.Group[7].Backup3)} elseif ($_.Group[8].Backup3 -ne $null) { ($_.Group[8].Backup3)} elseif ($_.Group[9].Backup3 -ne $null) { ($_.Group[9].Backup3)} elseif ($_.Group[10].Backup3 -ne $null) { ($_.Group[10].Backup3)}; Backup4 = if ($_.Group[0].Backup4 -ne $null) { ($_.Group[0].Backup4)} elseif ($_.Group[1].Backup4 -ne $null) { ($_.Group[1].Backup4)} elseif ($_.Group[2].Backup4 -ne $null) { ($_.Group[2].Backup4)} elseif ($_.Group[3].Backup4 -ne $null) { ($_.Group[3].Backup4)} elseif ($_.Group[4].Backup4 -ne $null) { ($_.Group[4].Backup4)} elseif ($_.Group[5].Backup4 -ne $null) { ($_.Group[5].Backup4)} elseif ($_.Group[6].Backup4 -ne $null) { ($_.Group[6].Backup4)} elseif ($_.Group[7].Backup4 -ne $null) { ($_.Group[7].Backup4)} elseif ($_.Group[8].Backup4 -ne $null) { ($_.Group[8].Backup4)} elseif ($_.Group[9].Backup4 -ne $null) { ($_.Group[9].Backup4)} elseif ($_.Group[10].Backup4 -ne $null) { ($_.Group[10].Backup4)}; Backup5 = if ($_.Group[0].Backup5 -ne $null) { ($_.Group[0].Backup5)} elseif ($_.Group[1].Backup5 -ne $null) { ($_.Group[1].Backup5)} elseif ($_.Group[2].Backup5 -ne $null) { ($_.Group[2].Backup5)} elseif ($_.Group[3].Backup5 -ne $null) { ($_.Group[3].Backup5)} elseif ($_.Group[4].Backup5 -ne $null) { ($_.Group[4].Backup5)} elseif ($_.Group[5].Backup5 -ne $null) { ($_.Group[5].Backup5)} elseif ($_.Group[6].Backup5 -ne $null) { ($_.Group[6].Backup5)} elseif ($_.Group[7].Backup5 -ne $null) { ($_.Group[7].Backup5)} elseif ($_.Group[8].Backup5 -ne $null) { ($_.Group[8].Backup5)} elseif ($_.Group[9].Backup5 -ne $null) { ($_.Group[9].Backup5)} elseif ($_.Group[10].Backup5 -ne $null) { ($_.Group[10].Backup5)}; Backup6 = if ($_.Group[0].Backup6 -ne $null) { ($_.Group[0].Backup6)} elseif ($_.Group[1].Backup6 -ne $null) { ($_.Group[1].Backup6)} elseif ($_.Group[2].Backup6 -ne $null) { ($_.Group[2].Backup6)} elseif ($_.Group[3].Backup6 -ne $null) { ($_.Group[3].Backup6)} elseif ($_.Group[4].Backup6 -ne $null) { ($_.Group[4].Backup6)} elseif ($_.Group[5].Backup6 -ne $null) { ($_.Group[5].Backup6)} elseif ($_.Group[6].Backup6 -ne $null) { ($_.Group[6].Backup6)} elseif ($_.Group[7].Backup6 -ne $null) { ($_.Group[7].Backup6)} elseif ($_.Group[8].Backup6 -ne $null) { ($_.Group[8].Backup6)} elseif ($_.Group[9].Backup6 -ne $null) { ($_.Group[9].Backup6)} elseif ($_.Group[10].Backup6 -ne $null) { ($_.Group[10].Backup6)}; Backup7 = if ($_.Group[0].Backup7 -ne $null) { ($_.Group[0].Backup7)} elseif ($_.Group[1].Backup7 -ne $null) { ($_.Group[1].Backup7)} elseif ($_.Group[2].Backup7 -ne $null) { ($_.Group[2].Backup7)} elseif ($_.Group[3].Backup7 -ne $null) { ($_.Group[3].Backup7)} elseif ($_.Group[4].Backup7 -ne $null) { ($_.Group[4].Backup7)} elseif ($_.Group[5].Backup7 -ne $null) { ($_.Group[5].Backup7)} elseif ($_.Group[6].Backup7 -ne $null) { ($_.Group[6].Backup7)} elseif ($_.Group[7].Backup7 -ne $null) { ($_.Group[7].Backup7)} elseif ($_.Group[8].Backup7 -ne $null) { ($_.Group[8].Backup7)} elseif ($_.Group[9].Backup7 -ne $null) { ($_.Group[9].Backup7)} elseif ($_.Group[10].Backup7 -ne $null) { ($_.Group[10].Backup7)}; Backup9 = if ($_.Group[0].Backup9 -ne $null) { ($_.Group[0].Backup9)} elseif ($_.Group[1].Backup9 -ne $null) { ($_.Group[1].Backup9)} elseif ($_.Group[2].Backup9 -ne $null) { ($_.Group[2].Backup9)} elseif ($_.Group[3].Backup9 -ne $null) { ($_.Group[3].Backup9)} elseif ($_.Group[4].Backup9 -ne $null) { ($_.Group[4].Backup9)} elseif ($_.Group[5].Backup9 -ne $null) { ($_.Group[5].Backup9)} elseif ($_.Group[6].Backup9 -ne $null) { ($_.Group[6].Backup9)} elseif ($_.Group[7].Backup9 -ne $null) { ($_.Group[7].Backup9)} elseif ($_.Group[8].Backup9 -ne $null) { ($_.Group[8].Backup9)} elseif ($_.Group[9].Backup9 -ne $null) { ($_.Group[9].Backup9)} elseif ($_.Group[10].Backup9 -ne $null) { ($_.Group[10].Backup9)}; } } | select Name,@{N="$Date2";E={$_.Backup2}},@{N="$Date3";E={$_.Backup3}},@{N="$Date4";E={$_.Backup4}},@{N="$Date5";E={$_.Backup5}},@{N="$Date6";E={$_.Backup6}},@{N="Weekend of $Date7";E={$_.Backup7}},@{N="$Date9";E={$_.Backup9}} | Sort Name | ConvertTo-Html -Fragment #| set-cellcolor -Property $Date1 -Color red -Filter "$Date1 -like 'Failed'" | set-cellcolor -Property $Date1 -Color '#00ff00' -Filter "$Date1 -like 'Success'" | set-cellcolor -Property $Date1 -Color '#FFFF00' -Filter "$Date1 -like 'Warning'" } elseif ([DateTime]::Today.AddDays($Day1).DayOfWeek -eq "Sunday") { Write-Host "Combined" $bodySummaryRp = $EndResult | Group Name | ForEach { New-Object PSObject -Property @{ Name = $_.Name Backup1 = if ($_.Group[0].Backup1 -ne $null) { ($_.Group[0].Backup1)} elseif ($_.Group[1].Backup1 -ne $null) { ($_.Group[1].Backup1)} elseif ($_.Group[2].Backup1 -ne $null) { ($_.Group[2].Backup1)} elseif ($_.Group[3].Backup1 -ne $null) { ($_.Group[3].Backup1)} elseif ($_.Group[4].Backup1 -ne $null) { ($_.Group[4].Backup1)} elseif ($_.Group[5].Backup1 -ne $null) { ($_.Group[5].Backup1)} elseif ($_.Group[6].Backup1 -ne $null) { ($_.Group[6].Backup1)} elseif ($_.Group[7].Backup1 -ne $null) { ($_.Group[7].Backup1)} elseif ($_.Group[8].Backup1 -ne $null) { ($_.Group[8].Backup1)} elseif ($_.Group[9].Backup1 -ne $null) { ($_.Group[9].Backup1)} elseif ($_.Group[10].Backup1 -ne $null) { ($_.Group[10].Backup1)}; Backup3 = if ($_.Group[0].Backup3 -ne $null) { ($_.Group[0].Backup3)} elseif ($_.Group[1].Backup3 -ne $null) { ($_.Group[1].Backup3)} elseif ($_.Group[2].Backup3 -ne $null) { ($_.Group[2].Backup3)} elseif ($_.Group[3].Backup3 -ne $null) { ($_.Group[3].Backup3)} elseif ($_.Group[4].Backup3 -ne $null) { ($_.Group[4].Backup3)} elseif ($_.Group[5].Backup3 -ne $null) { ($_.Group[5].Backup3)} elseif ($_.Group[6].Backup3 -ne $null) { ($_.Group[6].Backup3)} elseif ($_.Group[7].Backup3 -ne $null) { ($_.Group[7].Backup3)} elseif ($_.Group[8].Backup3 -ne $null) { ($_.Group[8].Backup3)} elseif ($_.Group[9].Backup3 -ne $null) { ($_.Group[9].Backup3)} elseif ($_.Group[10].Backup3 -ne $null) { ($_.Group[10].Backup3)}; Backup4 = if ($_.Group[0].Backup4 -ne $null) { ($_.Group[0].Backup4)} elseif ($_.Group[1].Backup4 -ne $null) { ($_.Group[1].Backup4)} elseif ($_.Group[2].Backup4 -ne $null) { ($_.Group[2].Backup4)} elseif ($_.Group[3].Backup4 -ne $null) { ($_.Group[3].Backup4)} elseif ($_.Group[4].Backup4 -ne $null) { ($_.Group[4].Backup4)} elseif ($_.Group[5].Backup4 -ne $null) { ($_.Group[5].Backup4)} elseif ($_.Group[6].Backup4 -ne $null) { ($_.Group[6].Backup4)} elseif ($_.Group[7].Backup4 -ne $null) { ($_.Group[7].Backup4)} elseif ($_.Group[8].Backup4 -ne $null) { ($_.Group[8].Backup4)} elseif ($_.Group[9].Backup4 -ne $null) { ($_.Group[9].Backup4)} elseif ($_.Group[10].Backup4 -ne $null) { ($_.Group[10].Backup4)}; Backup5 = if ($_.Group[0].Backup5 -ne $null) { ($_.Group[0].Backup5)} elseif ($_.Group[1].Backup5 -ne $null) { ($_.Group[1].Backup5)} elseif ($_.Group[2].Backup5 -ne $null) { ($_.Group[2].Backup5)} elseif ($_.Group[3].Backup5 -ne $null) { ($_.Group[3].Backup5)} elseif ($_.Group[4].Backup5 -ne $null) { ($_.Group[4].Backup5)} elseif ($_.Group[5].Backup5 -ne $null) { ($_.Group[5].Backup5)} elseif ($_.Group[6].Backup5 -ne $null) { ($_.Group[6].Backup5)} elseif ($_.Group[7].Backup5 -ne $null) { ($_.Group[7].Backup5)} elseif ($_.Group[8].Backup5 -ne $null) { ($_.Group[8].Backup5)} elseif ($_.Group[9].Backup5 -ne $null) { ($_.Group[9].Backup5)} elseif ($_.Group[10].Backup5 -ne $null) { ($_.Group[10].Backup5)}; Backup6 = if ($_.Group[0].Backup6 -ne $null) { ($_.Group[0].Backup6)} elseif ($_.Group[1].Backup6 -ne $null) { ($_.Group[1].Backup6)} elseif ($_.Group[2].Backup6 -ne $null) { ($_.Group[2].Backup6)} elseif ($_.Group[3].Backup6 -ne $null) { ($_.Group[3].Backup6)} elseif ($_.Group[4].Backup6 -ne $null) { ($_.Group[4].Backup6)} elseif ($_.Group[5].Backup6 -ne $null) { ($_.Group[5].Backup6)} elseif ($_.Group[6].Backup6 -ne $null) { ($_.Group[6].Backup6)} elseif ($_.Group[7].Backup6 -ne $null) { ($_.Group[7].Backup6)} elseif ($_.Group[8].Backup6 -ne $null) { ($_.Group[8].Backup6)} elseif ($_.Group[9].Backup6 -ne $null) { ($_.Group[9].Backup6)} elseif ($_.Group[10].Backup6 -ne $null) { ($_.Group[10].Backup6)}; Backup7 = if ($_.Group[0].Backup7 -ne $null) { ($_.Group[0].Backup7)} elseif ($_.Group[1].Backup7 -ne $null) { ($_.Group[1].Backup7)} elseif ($_.Group[2].Backup7 -ne $null) { ($_.Group[2].Backup7)} elseif ($_.Group[3].Backup7 -ne $null) { ($_.Group[3].Backup7)} elseif ($_.Group[4].Backup7 -ne $null) { ($_.Group[4].Backup7)} elseif ($_.Group[5].Backup7 -ne $null) { ($_.Group[5].Backup7)} elseif ($_.Group[6].Backup7 -ne $null) { ($_.Group[6].Backup7)} elseif ($_.Group[7].Backup7 -ne $null) { ($_.Group[7].Backup7)} elseif ($_.Group[8].Backup7 -ne $null) { ($_.Group[8].Backup7)} elseif ($_.Group[9].Backup7 -ne $null) { ($_.Group[9].Backup7)} elseif ($_.Group[10].Backup7 -ne $null) { ($_.Group[10].Backup7)}; Backup8 = if ($_.Group[0].Backup8 -ne $null) { ($_.Group[0].Backup8)} elseif ($_.Group[1].Backup8 -ne $null) { ($_.Group[1].Backup8)} elseif ($_.Group[2].Backup8 -ne $null) { ($_.Group[2].Backup8)} elseif ($_.Group[3].Backup8 -ne $null) { ($_.Group[3].Backup8)} elseif ($_.Group[4].Backup8 -ne $null) { ($_.Group[4].Backup8)} elseif ($_.Group[5].Backup8 -ne $null) { ($_.Group[5].Backup8)} elseif ($_.Group[6].Backup8 -ne $null) { ($_.Group[6].Backup8)} elseif ($_.Group[7].Backup8 -ne $null) { ($_.Group[7].Backup8)} elseif ($_.Group[8].Backup8 -ne $null) { ($_.Group[8].Backup8)} elseif ($_.Group[9].Backup8 -ne $null) { ($_.Group[9].Backup8)} elseif ($_.Group[10].Backup8 -ne $null) { ($_.Group[10].Backup8)}; } } | select Name,@{N="Weekend of $Date1";E={$_.Backup1}},@{N="$Date3";E={$_.Backup3}},@{N="$Date4";E={$_.Backup4}},@{N="$Date5";E={$_.Backup5}},@{N="$Date6";E={$_.Backup6}},@{N="$Date7";E={$_.Backup7}},@{N="Weekend of $Date8";E={$_.Backup8}} | Sort Name | ConvertTo-Html -Fragment #| set-cellcolor -Property $Date1 -Color red -Filter "$Date1 -like 'Failed'" | set-cellcolor -Property $Date1 -Color '#00ff00' -Filter "$Date1 -like 'Success'" | set-cellcolor -Property $Date1 -Color '#FFFF00' -Filter "$Date1 -like 'Warning'" } #Compile all of the fragments together ready for the report $htmlOutput = $headerObj + $bodyTop + $BodySummHeader + $bodySummaryRp $htmlOutput = $htmlOutput.Replace("$($HTMLbreak + $footerObj)","$($footerObj)") # Add color to output depending on results #Green $htmlOutput = $htmlOutput.Replace("<td>Running<","<td style=""color: #00b051;"">Running<") $htmlOutput = $htmlOutput.Replace("<td>OK<","<td style=""color: #00b051;"">OK<") $htmlOutput = $htmlOutput.Replace("<td>Alive<","<td style=""color: #00b051;"">Alive<") $htmlOutput = $htmlOutput.Replace("<td>Success<","<td style=""background-color: #00b051;color: #ffffff;text-align: center;"">Success<") #Yellow $htmlOutput = $htmlOutput.Replace("<td>Warning<","<td style=""background-color: #ffc000;text-align: center;"">Warning<") #Red $htmlOutput = $htmlOutput.Replace("<td>Not Running<","<td style=""color: #ff0000;"">Not Running<") $htmlOutput = $htmlOutput.Replace("<td>Failed<","<td style=""background-color: #ff0000;color: #ffffff;text-align: center;"">Failed<") $htmlOutput = $htmlOutput.Replace("<td>Critical<","<td style=""color: #ff0000;"">Critical<") $htmlOutput = $htmlOutput.Replace("<td>Dead<","<td style=""color: #ff0000;"">Dead<") #Save the report $htmlOutput | Out-File $Outputlocation #Email the report $Email = $htmlOutput $smtpServer = $smtpServerref [string[]]$to = $emailTo $from = $emailFrom $subject = "Veeam Backup Report - $DateToday" $body = "" $body += $Email Send-MailMessage -SmtpServer $smtpServer -To $to -From $from -Subject $subject -Body $body -BodyAsHtml
Blog-a-Week 2018 Posting (BAW):
In previous years, I have had periods throughout the year where I have been unable to post an entry to myblog. During 2018, my aim is to post a blog entry each week of the year. I’m hoping that the blog entries will all be useful bits of information or items that I’ve been working on recently but if the standard of the entries drops, I apologise now, as this could have been a busy week and I wasn’t able to put in as much time as I would have liked into the post
Great report. Do you have a report that will also show backupsync jobs (Backup Copy)? Or do you know what needs to change in your report to also report on other types of jobs?
Thanks for the feedback. Since writing the powershell report, my job role has changed and I haven’t revisited the report. I have just taken a look at the report and believe that you should be able to change the script where it says “$BackupSessions# = Get-VBRBackupSession | where {(($_.JobType -eq “Backup”) to change the “Backup” to “BackupSync” and this should help with your requirements. Just remember that there are going to be a number of times that the “Backup” entry is mentioned throughout the script (8 or 9 times). Interested to hear any additional feedback. Thanks