如何从命令行查找网络打印机的 IP

如何从命令行查找网络打印机的 IP

如何在不知道打印机 IP 的情况下 ping 打印机(从命令提示符)。如何在命令提示符中找到打印机 IP?

答案1

对于我们的 IPP 打印机(EPSON ET_16650 系列),WMIC 和 PowerShell 不知道主机名,只知道端口名 - 其中包含原始 IP 地址。现在地址已更改,实际 IP 似乎只能在端口的注册表项下找到:

HKLM:\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\IP_192.168.0.11

它有一个带有当前 IP 的字符串值:

HostName: 192.168.101.11

(那里的 IPAddress 字符串值为空。)

因此,至少在我们的例子中,命令行方法是找到端口名称,例如手动使用 PowerShell:

get-printer | select name, portname

name                                    portname
----                                    --------
Microsoft XPS Document Writer           PORTPROMPT:
EPSON ET-16650 Series                   IP_192.168.0.11

$portname = "IP_192.168.0.11"

或者如果您知道 Windows 中打印机的确切名称,您可以通过编程方式执行此操作:

$portname = (get-printer "EPSON ET-16650 Series" | select portname).portname

然后您可以使用该 $portname 来获取实际 IP:

$basekey  = "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\"
$key      = $basekey + $portname
$value    = "HostName"
(Get-ItemProperty -Path $key -Name $value).$value

192.168.101.11

答案2

如果您已在 Windows PC 上映射打印机,则可以运行各种 powershell 或 WMI 命令:

https://social.technet.microsoft.com/Forums/ie/en-US/77344a1d-4d0a-40bb-a8d8-75516ba12b0a/get-printer-names-ip-addresses-and-drivers-from-a-computer-using-wmi?forum=ITCG

get-wmiobject win32_printer | select name

get-wmiobject win32_tcpipprinterport | select hostaddress

根据您的打印机和驱动程序,这可能没有 IP 地址,您必须查询 WMI。

wmic printer get DriverName, Name, Portname 

如果是 HP 激光网络打印机,您可能正在连接到端口 9100,并且 netstat 将显示来自 powershell 的活动网络连接:

netstat -an | grep 9100

答案3

大多数网络打印机使用 IPv4。打开命令提示符并运行, ipconfig了解您的 IP 地址,然后通过arp -a在命令提示符窗口上运行来检查您的地址解析协议以查看连接的设备。如果您仍有疑问,请从下载 nmap这里并扫描您的网络。

答案4

您可以运行批处理文件来循环遍历地址,对每个地址执行 ping 操作半秒钟,然后继续。只要您只有一个或几个子网,这应该可以正常工作。如果您的网络非常复杂,则可能需要很长时间。以下是示例脚本:

setlocal enabledelayedexpansion
set /a counter=0
:start
set /a counter+=1
ping -n 1 192.168.0.!counter! > devices.txt
if %counter%=255 goto finish
goto start
:finish

相关内容