powershell 是管理 windows 打印队列最直接可靠的自动化工具,支持查看、筛选、取消作业,批量清理卡死队列,导出日志及实时监控。
powershell 是管理 windows 打印队列最直接、最可靠的自动化工具。它不依赖图形界面,能精准控制任务状态、批量操作作业、快速清空卡滞队列,还能嵌入到日常运维脚本或定时任务中。
查看当前所有打印作业
用一条命令就能列出全部待处理和进行中的任务,比打开图形界面快得多:
- Get-PrintJob:适用于 Windows 10/11 专业版及以上,返回结构化对象(含文档名、用户、页数、状态)
- Get-CimInstance -ClassName Win32_PrintJob:兼容性更广,支持旧版系统,输出字段包括 Name、Status、TotalPages、TimeSubmitted
- 加 | Where-Object {$_.Status -ne "Normal"} 可快速筛选出“错误”“暂停”“脱机”等异常任务
取消指定或全部打印任务
图形界面点几次才能清空的队列,PowerShell 一行命令就能搞定:
- 取消某台打印机上的全部任务:Get-PrintJob -PrinterName "HP LaserJet MFP" | Remove-PrintJob
- 取消当前用户提交的所有任务:Get-PrintJob | Where-Object {$_.UserName -eq "$env:USERDOMAIN\$env:USERNAME"} | Remove-PrintJob
- 强制终止某个特定文档:Get-PrintJob | Where-Object {$_.DocumentName -like "*Invoice*"} | Remove-PrintJob
批量清理卡死队列(服务级重置)
当队列完全无响应、任务变灰、无法右键取消时,说明 Spooler 服务已被损坏的缓存文件阻塞。这时需服务级干预:
- 停止服务:Stop-Service -Name Spooler -Force
- 清空缓存目录:Remove-Item -Path "$env:windir\System32\spool\PRINTERS\*" -Force -Recurse
- 重启服务:Start-Service -Name Spooler
- 可合并为单行脚本:Stop-Service Spooler -Force; Remove-Item "$env:windir\System32\spool\PRINTERS\*" -Force -Recurse; Start-Service Spooler
导出与监控打印作业日志
把队列状态变成可分析的数据,便于排查规律性故障或做月度统计:
- 导出为 CSV:Get-PrintJob | Select-Object PrinterName, DocumentName, UserName, TotalPages, Status, TimeSubmitted | Export-Csv -Path "C:\Reports\print-jobs-$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
- 监控新任务(每30秒检查一次):while($true) { Get-PrintJob | Where-Object {$_.TimeSubmitted -gt (Get-Date).AddSeconds(-30)}; Start-Sleep -Seconds 30 }
- 配合 Send-MailMessage 或写入事件日志,可实现异常任务自动告警











