修复:Windows下的网络打印机离线

时间:2020-01-09 10:46:25  来源:igfitidea点击:

有时我们会注意到一些连接的网络打印机脱机,停止打印,打印作业开始在运行Windows Server的打印服务器上排队。在本文中,我们将考虑为什么网络打印机可能会进入脱机状态,以及如何在不重新安装打印机或者重新启动打印服务器的情况下解决此问题。

打开打印服务器上的 打印管理控制台,找到 队列状态=离线状态的打印机,打开其打印队列属性,并确保在其设置中没有选中“ 脱机使用打印机选项”。

然后确保打印机已打开并可通过网络访问(使用按IP地址ping检查打印机可用性,确保可以打开打印机管理web界面)。

Windows如何确定网络打印机可用性状态?在Windows 7及更新版本中,默认情况下, SNMP(简单网络管理协议)用于查询网络打印机状态。打印服务器向打印机发送SNMP请求并等待响应。如果没有从打印机接收到SNMP响应,则认为该打印机不可用,并在打印服务器上脱机。让我们看看如何为Windows打印服务器上的网络打印机配置SNMP协议设置。

首先,确保打印机支持SNMP。打开网络打印机管理web界面,确保在打印机设置中启用了SNMP,并且用于它的团体名称是 公共

例如,我们可以在 网络-> SNMP-> 启用SNMP只读访问(对获取团体名称使用public)找到HP LaserJet CP1525的SNMP设置。

在打印管理控制台中找到打印机,打开其属性并转到 端口选项卡。打开端口设置: 标准TCP/IP端口-> 配置端口。如果打印机支持SNMP,请确保选中了 SNMP状态启用选项, 社区名称设置为 公共

如果打印机不支持SNMP,则必须在打印服务器上的打印机端口设置中禁用它。因此,Windows将停止发送SNMP包来轮询设备状态。

确保打印机状态已更改为 就绪

我们可以使用以下PowerShell cmdlet(使用内置的PrintManagement模块)在打印服务器上查找已禁用SNMP的所有打印机:

get-printerport |where {$_.snmpenabled -ne $True}|select name,protocol,description,printerhostaddress

以下PowerShell命令将查找SNMP团体名称与Public不同的网络打印机的端口:

get-printerport |where {$_.SNMPCommunity -ne ‘Public’ –and $_.snmpenabled -eq $True }|select name,protocol,description,printerhostaddress, snmpenabled, SNMPCommunity

如果检查SNMP设置没有帮助打印机联机,则应检查以下参数。

确保在打印端口设置中指定了正确的打印机IP地址;

确保使用的端口类型是“ 标准TCP/IP端口而不是“ WSD端口

确保防火墙没有阻塞SNMP流量(端口161/UDP和162/UDP);

完全卸下打印机和打印端口,然后重新创建它们。重新安装打印机驱动程序;

重新启动后台处理程序服务:

[Restart-Service**(http://theitroad.local/manage-windows-services-powershell/) "Spooler"

通过在注册表项中创建一个名为 SNMPLegacy且值为 1的新DWORD参数:HKEY U LOCAL U MACHINE\SYSTEM\CurrentControlSet\Control\Print”,可以完全禁用Windows上所有打印机的SNMP轮询。