Dargslan.WinPrintMgr.psm1
|
<# .SYNOPSIS Windows print management toolkit — printer inventory, print queue monitoring, driver audit, spooler health, and print job tracking .DESCRIPTION Part of the Dargslan Windows Admin Toolkit collection. More tools and resources at https://dargslan.com Free Cheat Sheets: https://dargslan.com/cheat-sheets .LINK https://dargslan.com .LINK https://github.com/Dargslan/powershell-admin-scripts #> function Get-PrinterAudit { <# .SYNOPSIS Audit all printers, queues, and print spooler health .DESCRIPTION Lists installed printers, checks print queue status, audits drivers, and verifies spooler service health. Part of Dargslan.WinPrintMgr — https://dargslan.com #> [CmdletBinding()] param([switch]$Json) $report = [ordered]@{ Spooler = Get-Service Spooler | Select-Object Status, StartType Printers = Get-Printer -ErrorAction SilentlyContinue | Select-Object Name, Type, DriverName, PortName, Shared, Published, @{N="Status";E={$_.PrinterStatus}} PrintJobs = Get-PrintJob -PrinterName (Get-Printer | Select-Object -First 5 -ExpandProperty Name) -ErrorAction SilentlyContinue | Select-Object PrinterName, DocumentName, UserName, SubmittedTime, Size, JobStatus Ports = Get-PrinterPort -ErrorAction SilentlyContinue | Select-Object Name, Description, PortType Drivers = Get-PrinterDriver -ErrorAction SilentlyContinue | Select-Object Name, Manufacturer, PrinterEnvironment Summary = [PSCustomObject]@{ TotalPrinters = (Get-Printer -ErrorAction SilentlyContinue | Measure-Object).Count NetworkPrinters = (Get-Printer -ErrorAction SilentlyContinue | Where-Object Type -eq "Connection" | Measure-Object).Count SharedPrinters = (Get-Printer -ErrorAction SilentlyContinue | Where-Object Shared | Measure-Object).Count PendingJobs = (Get-PrintJob -PrinterName (Get-Printer -ErrorAction SilentlyContinue | Select-Object -First 10 -ExpandProperty Name) -ErrorAction SilentlyContinue | Measure-Object).Count SpoolerRunning = (Get-Service Spooler).Status -eq "Running" } } if ($Json) { return $report | ConvertTo-Json -Depth 3 } Write-Host "`n [Printer Audit]" -ForegroundColor Cyan $report.Summary | Format-List $report.Printers | Format-Table Name, Type, DriverName, PortName, Shared -AutoSize return $report } Export-ModuleMember -Function * |