![Windows - 通过 IP 地址查找打印机名称](https://linux22.com/image/604300/Windows%20-%20%E9%80%9A%E8%BF%87%20IP%20%E5%9C%B0%E5%9D%80%E6%9F%A5%E6%89%BE%E6%89%93%E5%8D%B0%E6%9C%BA%E5%90%8D%E7%A7%B0.png)
尝试通过 IP 地址查找打印机队列名称。打印机托管在服务器上。
- 在 AD 中搜索 IP - 但没有找到。
- nbtstat 返回了设备名称,但是它在 AD 中不存在。
我确信打印机存在于网络中的打印服务器上。我们有大约 40-50 台打印服务器。
任何帮助均感激不尽。
答案1
您有打印机本身的 IP 地址(用于管理或直接打印),并且想知道它在哪个 Windows 打印服务器上共享?对吗?
您可以“手动”搜索每个打印服务器(我认为这比查询所有打印服务器更容易,因为我认为您可能从逻辑上对它可能驻留在何处有一些想法,例如将其缩小到打印机所在子网的本地 5 个打印服务器)。
使用 Powershell(其中 $printservername 是可能的打印服务器主机名):
Get-WMIObject -class Win32_Printer -computer $printservername | Select Name,DriverName,PortName | Where-Object {$_.PortName -eq "IP_x.x.x.x"}
请注意,您可以继续运行它而不使用 Where-Object 部分来查看 PortName 输出的样子,但它应该类似于 IP_10.10.10.10 或类似的。
如果您没有得到任何结果,则该打印服务器不是托管该 IP 地址的服务器。
更新:由于您需要一个输入文件,所以我也为您做了这件事。您需要 2 个输入文件,一个包含打印服务器列表,另一个包含列出的 IP 地址或列出的 IP_x.xxx。请注意,如果您使用其他名称作为端口名称(例如主机名/DNS),则需要将它们放入您的 PrinterIP.txt 文件中。如果您不知道确切的 PortName,则此脚本不会返回任何结果。此外,在 PrinterIP.txt 中只输入一个“端口名称”,否则它不会返回任何匹配的结果。
# --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Script: Find-WhichPrintServer.ps1
# Author: TheCleaner, serverfault.com
# Date: 1/16/2013
# Comments: This script will query each of the computers in the input file and look for a particular printer's IP address on that print server. If found it will output the name of the print server and printer name and info
# --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$printservers = Get-Content -Path C:\PSinput\PrintServers.txt
$printerIP = Get-Content -Path C:\PSinput\printerIP.txt #note this must be the correct format such as IP_x.x.x.x
Get-WMIObject -class Win32_Printer -computer $printservers | Select SystemName,Name,DriverName,PortName | Where-Object {$_.PortName -eq $printerIP} |
Format-Table -Property SystemName, PortName, Name, DriverName -AutoSize
希望有帮助!