从 Windows 打印服务器轮询打印机信息
Polling printer info from a Windows print server
我正在尝试开发一种从 Windows 打印服务器中提取打印机列表(至少名称和 IP)的方法。我计划在 PHP 驱动的外部状态网站中使用此信息,运行 在 Linux 网络服务器上,它通过 SNMP 单独与打印机通信。 SNMP 通信已正常运行。我只需要一种动态生成与之通信的打印机列表的方法,而不是对所有 IPs/DNS 主机名进行硬编码。
这里的想法是,我在完全不接触或更改打印服务器、打印机或底层网络服务器的情况下执行此操作。我唯一能控制的是一个共享的、非管理的 CPanel 帐户。
到目前为止,我的研究使我找到了三个潜在的线索。我几乎没有任何经验。
1) PHP printer_list 命令,它是 PECL 扩展的一部分。目前我们的网络服务器没有安装这个扩展,我不想发出那个请求,除非我知道它会为我的目的工作。
2) lpstat Linux 命令,CUPS 的一部分。我已经尝试根据手册页使用它,但它似乎只是坐在那里什么都不做。我不知道这是不是因为它期待 CUPS 响应,我认为它不会从 Windows 服务器获得,或者这是否可能是防火墙问题。
3) 某种 SMB 或 WMI 查询。我什至不知道如何从这些开始。
我想就从哪里开始寻求建议。这是一个非常麻烦的研究项目,因为 90% 的搜索结果都是关于想要打印的人。另外 8% 是关于人们轮询本地系统以获取打印机信息。其余的都是黑魔法和专有的企业解决方案。
非常感谢任何见解。
==马特
我正在有效地使用 WMI 通过网络获取打印机信息:
Select * FROM Win32_Printer
开始:
1 - 运行 wbemtest
来自 运行 window.
2 - 连接到您知道已配置打印机的任何机器。
3 - 有查询选项,复制Select * FROM Win32_Printer
4 - 第 4 步将 return 您 table,单击 Show MOF
,它将为您提供打印机信息。维奥拉,你完成了。
5 - 我用过 C#
ManagementObjectSearcher
& ManagementObjectCollection
,它非常简单易用。
使用 WMI 有一些优点和缺点。在线阅读。
我正在尝试开发一种从 Windows 打印服务器中提取打印机列表(至少名称和 IP)的方法。我计划在 PHP 驱动的外部状态网站中使用此信息,运行 在 Linux 网络服务器上,它通过 SNMP 单独与打印机通信。 SNMP 通信已正常运行。我只需要一种动态生成与之通信的打印机列表的方法,而不是对所有 IPs/DNS 主机名进行硬编码。
这里的想法是,我在完全不接触或更改打印服务器、打印机或底层网络服务器的情况下执行此操作。我唯一能控制的是一个共享的、非管理的 CPanel 帐户。
到目前为止,我的研究使我找到了三个潜在的线索。我几乎没有任何经验。
1) PHP printer_list 命令,它是 PECL 扩展的一部分。目前我们的网络服务器没有安装这个扩展,我不想发出那个请求,除非我知道它会为我的目的工作。
2) lpstat Linux 命令,CUPS 的一部分。我已经尝试根据手册页使用它,但它似乎只是坐在那里什么都不做。我不知道这是不是因为它期待 CUPS 响应,我认为它不会从 Windows 服务器获得,或者这是否可能是防火墙问题。
3) 某种 SMB 或 WMI 查询。我什至不知道如何从这些开始。
我想就从哪里开始寻求建议。这是一个非常麻烦的研究项目,因为 90% 的搜索结果都是关于想要打印的人。另外 8% 是关于人们轮询本地系统以获取打印机信息。其余的都是黑魔法和专有的企业解决方案。
非常感谢任何见解。 ==马特
我正在有效地使用 WMI 通过网络获取打印机信息:
Select * FROM Win32_Printer
开始:
1 - 运行 wbemtest
来自 运行 window.
2 - 连接到您知道已配置打印机的任何机器。
3 - 有查询选项,复制Select * FROM Win32_Printer
4 - 第 4 步将 return 您 table,单击 Show MOF
,它将为您提供打印机信息。维奥拉,你完成了。
5 - 我用过 C#
ManagementObjectSearcher
& ManagementObjectCollection
,它非常简单易用。
使用 WMI 有一些优点和缺点。在线阅读。