Featured image of post Monitoring with PowerShell: Monitoring Windows Server Backup

Monitoring with PowerShell: Monitoring Windows Server Backup

This past week I’ve been suffering from a terrible cold, so I haven’t been blogging very actively because my brain is running at 5% of it’s normal capacity. This blog has been requested a couple of times by readers. I whipped this up real quick…:)

Some MSPs are using Windows Server Backup as a ‘last resort’ type of backup, if online backups fail, or the backup software does not work, they still have an image based backup for those huge emergencies.

Monitoring WSB is thankfully fairly straight forward – Microsoft supplies the PowerShell module and it is able to grab all the information we need, such as the last backup error code, the last backup date and time, and of course if a job is currently running.

The Script

So nothing special about this one, except that you need the Windows Backup PowerShell module installed. It will error out if you do not. 🙂

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$Date = (get-date).AddHours(-48)
try {
    $Summary = Get-WBSummary
    $CurrentJob = Get-WBJob
}
catch {
    write-host "Could not execute PowerShell command to get backup status: $($_.Exception.Message)"
    exit 1
}

$FailedBackups = invoke-command {
    if ($CurrentJob.JobState -eq 'Running' -and $CurrentJob.StartTime -lt (get-date).AddHours(-23)) { "Backup has been running for over 23 hours. Backup Started at $($CurrentJob.StartTime)" }
if ($Summary.LastBackupResultHR -ne '0') { "Backup has completed with error code $($Summary.LastBackupResultHR). Last Backup Started at $($Summary.LastBackupTime)" }
if ($Summary.LastSuccessfulBackupTime -lt $date) { "No succesfull backup for the last 48 hours." }
}

if ($FailedBackups) {
    write-host "Failed backups found. Please check diagnostic information"
    write-host ($FailedBackups, $Summary | Out-String)
    exit 1
}
else {
    write-host "Healthy. No Failed backups"
    write-host ($FailedBackups, $Summary | Out-String)
}

And that’s it! as always, Happy PowerShelling.

All blogs are posted under AGPL3.0 unless stated otherwise
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy