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