Featured image of post Monitoring with PowerShell: Monitoring print queues

Monitoring with PowerShell: Monitoring print queues

So this one is related to my recent blog about documenting printers; right after the blog I got some comments that I never focused on printer monitoring. I think that’s because printers have a mental block in my mind as I see them as pure evil. 🙂

But without jokes; of course we can monitor printers and print queues. We have some clients that printing is a key part of business so I’ve created the monitoring component below. This monitors both the printer status(e.g. offline/error/no toner, etc) and the Job status. Sometimes jobs get stuck in the queue blocking all others so it’s a good one to cover.

The Script

 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
26
27
28
29
30
31
$Printers = get-printer

$PrintStatus = foreach ($Printer in $Printers) {
    $PrintJobs = get-PrintJob -PrinterObject $printer
    $JobStatus = foreach ($job in $PrintJobs) {
        if ($Job.JobStatus -ne "normal") { "Not Healthy - $($Job)" }
}
[PSCustomObject]@{
PrinterName = $printer.Name
PrinterStatus = $Printer.PrinterStatus
PrinterType = $Printer.Type
JobStatus = $JobStatus
}
}

$PrintersNotNormal = $PrinterStatus.PrinterStatus | Where-Object { $_.PrinterStatus -ne "normal" }
if (!$PrintersNotNormal) {
write-host "Healthy - No Printer Errors found"
}
else {
Write-Host "Unhealthy - Printers with errors found."
$PrintersNotNormal
}
$JobsNotNormal = $PrinterStatus.PrinterStatus | Where-Object { $_.JobStatus -ne "normal" -and $_.JobStatus -ne $null }
if (!$JobsNotNormal) {
write-host "Healthy - No Job Errors found"
}
else {
Write-Host "Unhealthy - JJobs with errors found."
$JobsNotNormal
}

And that’s it! a simple but short one. I’ll be posting some more information about my bigger project AzPam somewhere in December. For next week I have some Azure Function stuff planned – One of them being a method to join a Microsoft Teams meeting, using a code instead of a super long URL. 🙂

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