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. 🙂

$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.

Recent Articles

Automating with PowerShell: making stolen tokens useless with Global Secure Access

Last week I watched Merill Fernando talk to Alex Pavlovsky and Marilee Tuscak from the Entra team about something I’d kinda put under the “needs a GSA licence” branch and i’d check it out later, turns out that like most people, I half-assed the documentation and it turns out it doesn’t. There’s two features that come with any P1 license; Compliant network check and Source IP Restoration. So BP, P1, or even frontline worker licenses already have this.

CIPP ❤️ #IntuneForMSPs

We’re Joining #IntuneForMSPs 🎉

Being invited by Microsoft to join a global initiative is a big moment for us, and we want to be clear about why it matters. #IntuneForMSPs is Microsoft’s program to help MSPs deliver Microsoft 365, Intune, and Copilot services at scale, and CIPP is now part of it, bringing the largest MSP community in the channel directly to Microsoft.

The return of CyberDrain CTF

CyberDrain CTF returns! (and so do I!)

It’s been since september that I actually picked up a digital pen equivalent and wrote anything down. This was due to me being busy with life but also my side projects like CIPP. I’m trying to get back into the game of scripting and blogging about these scripts. There’s still so much to automate and so little time, right? ;)