部门共享打印机为何间歇脱机、打印任务积压?

问题背景

公司财务部门共享一台 HP LaserJet M507dn 黑白激光打印机,通过 USB 连接到一台 Windows 10 工控机,以 Windows 共享打印的方式供同楼层 20 名财务人员使用。日均打印量约 500 页,以 A4 票据和报表为主。

故障现象

2024 年 5 月初开始,财务同事陆续反馈:打印机每隔 1-2 小时会自动显示"脱机"状态,期间的打印任务全部进入队列等待。每次联系 IT 过去重启 Print Spooler 服务后恢复,但过不了多久又会脱机。

1
2
3
4
PS> Get-Printer -Name "HP-M507-Finance" | Select PrinterStatus, JobCount
PrinterStatus         JobCount
--------------         --------
Offline                    47   # 积压47个任务

重启服务的脚本成了"每日必修课",一天要执行五六次。

排查过程

第一步:检查基础连接

1
2
3
4
5
PS> Test-Connection 192.168.10.45 -Count 10    # 工控机IP
Reply from 192.168.10.45: bytes=32 time<1ms    # 网络正常

PS> ping 192.168.10.88 -Count 5                # 打印机IP(自带网口)
Reply from 192.168.10.88: bytes=32 time=2ms    # 网络正常

网络连通性无问题。打印机 Web 管理页面也能正常打开。

第二步:检查系统日志

1
PS> Get-EventLog -LogName System -Source "Print" -Newest 20 | Format-List

日志中出现规律性的错误:

1
2
3
4
Event ID: 372
Source: Microsoft-Windows-PrintService
The print spooler failed to communicate with printer HP-M507-Finance 
because the SNMP query timed out.

每 90 分钟左右出现一次 SNMP 超时,然后打印机状态变更为 Offline。

第三步:检查打印机电源管理

登录打印机 Web 管理界面 → 设置 → 电源管理:

1
2
休眠定时器: 90 分钟
休眠后唤醒方式: 仅物理按键

打印机设置了 90 分钟无任务自动休眠。进入休眠后,打印机网口模块也进入低功耗状态,无法响应 SNMP 查询。

第四步:对比 SNMP 和 WSD

Windows 默认使用两种协议检测打印机状态:

  • SNMP:主动轮询打印机状态,超时后判定脱机
  • WSD(Web Services for Devices):被动接收打印机事件通知

当前配置中,SNMP 轮询间隔为 60 秒,而打印机休眠后 SNMP 无响应 → 被判定为脱机 → 休眠期间无任务 → 无法自然唤醒 → 恶性循环。

解决方案

  1. 方案一(推荐,已实施):关闭 SNMP 状态检测
1
2
# 关闭该打印机的 SNMP 状态轮询
Set-Printer -Name "HP-M507-Finance" -PortName "IP_192.168.10.88" 

在端口配置中取消勾选 “SNMP Status Enabled”。

  1. 方案二(备选):延长打印机休眠时间 在 Web 管理界面将休眠定时器从 90 分钟延长到 480 分钟(工作时间不进入休眠)。

  2. 方案三(长期):启用 WSD 在打印机和工控机上同时启用 WSD 协议,WSD 能在打印机恢复时主动通知 Windows,比 SNMP 轮询更可靠。

  3. 最终方案:关闭 SNMP 检测 + 禁用工作时间休眠,双管齐下。

根因分析

直接原因:打印机进入节能休眠 → 网口模块停止响应 SNMP 查询 → Windows 判定打印机 Offline → 累积打印任务 → 人工重启恢复 → 下次休眠复发。

深层原因:HP 企业级打印机的默认 90 分钟休眠策略是为欧美办公环境设计的(打印频率高、不间断),与财务部门的实际使用模式(高峰集中在上午、下午各固定时段打印报表)不匹配。

预防措施

  1. 打印机准入标准:新打印机上线前统一配置电源策略,关闭工作时间休眠或设置 >8 小时
  2. 端口配置模板:所有共享打印机默认关闭 SNMP 状态检测,改用 WSD 事件通知
  3. 监控脚本:编写定时检测脚本,发现 Offline 状态超过 5 分钟自动重启 Print Spooler
  4. 打印服务文档:更新 IT 知识库,记录常见打印机脱机的排查步骤

总结

打印机"脱机"是桌面运维中最常见的报修之一,但多数时候不是网络或驱动问题,而是打印机节能策略与 Windows 检测机制的冲突。SNMP 轮询在打印机醒着时好使,一旦打印机节能,就成了"狼来了"。关闭 SNMP 检测虽然会失去打印机状态的主动感知,但对共享打印机来说,用户体验的改善远大于状态监控的损失。

使用 Hugo 构建
主题 StackJimmy 设计