目前,我正在编写一个 PS 脚本来扫描网络并检索所有 Windows 服务器、其产品密钥、SQL Server 产品密钥、CPU、RAM、网络共享以及所有找到的 Windows 服务器上的服务。基本上,这是为了在我们公司购买新办公室/其他公司时将网络合并到我们的网络之前,汇编一份用于站点评估的信息列表。到目前为止,我已经能够将这部分工作得相当顺利,并将信息推送到 .txt 或 .csv 文件。
我想要收集的信息中唯一缺少的另一个主要部分是网络打印机。到目前为止,我能找到的最接近的方法是一种返回网络上的 uPNP 设备的方法,它不会返回所有打印机。它目前唯一返回的是 Ricoh MFP,而且我们网络上还有 HP 和其他打印机。
我的问题是,Powershell 中是否有方法或函数可以检索网络上打印机的 IP、品牌和型号?目前,脚本以以下形式接受用户输入以进行网络扫描XXX0并根据每个 IP 检索信息(通过循环和计数器)XXX254所以如果方法/cmdlet 是特定于 IP/主机的,那就没问题。
除了获取本地打印机或打印服务器上的打印机之外,我没有找到使用 PS 检索打印机信息的任何方法,并且我们打交道的大多数公司都没有打印服务器。
提前致谢。
答案1
因此,为了解决这个问题,我找到了一种方法来检查大多数网络打印机使用的端口 9100 上的响应,并将 IP 列表输出到 Printers.csv 文件中。这将作为以后手动填写打印机地址的参考。使用的一些方法摘录自本文以防其他人希望引用它。我将端口更改为 9100,并设置一个 IF 语句以在循环网络时将 IP 推送到数组中,然后将数组推送到 .csv。
到目前为止,这已在我们的环境中适用于 Ricoh、HP 和 Konica 打印机。希望这可以帮助其他可能使用 Powershell 创建快速扫描脚本的人。
更新:
这是 .ps1 文件的副本我已经完成了到目前为止的工作,以防其他人正在从事类似的项目。它不会返回 ESX 服务器名称或打印机品牌和型号,但至少会将 IP 放在 CSV 中,这样您就知道从哪里开始查找。
答案2
我将用一种不同的方法来回答你的问题,以获得你想要的东西,而不是按照你问的方式来做。
你研究过 Spiceworks 吗?它收集数据的工作做得很出色全部(或至少大部分)信息以及更多信息,而且是免费的。我在一家咨询公司工作,该公司为小公司进行 IT 评估,我们使用它来获得他们整个库存的真正良好的初步评估。
他们已经花时间弄清楚了大多数供应商设备的钩子以获取此信息。如果您从头开始自己做,您必须知道每个打印机供应商如何配置其管理页面的 HTML(每个供应商可能有多个产品线),并且您必须抓取这些信息。您将必须构建一个包含所有打印机供应商和产品线的数据库,并有查询每个产品信息的方法 - 无论是通过 SNMP、telnet 还是抓取 HTTP(S) 页面。Spiceworks 已经为您完成了这项工作。
我非常喜欢做一些很酷很有趣的事情,但我更不喜欢重新发明轮子,尤其是当我不卖轮子而是载着人们四处转的时候。