如何获取局域网上活动的IP地址、MAC地址和NetBIOS名称列表?

5

如何获取局域网上活动IP地址、MAC地址和NetBIOS名称列表?

我想要获取每个主机的NetBIOS名称、IP和MAC地址,最好不需要走到每台电脑上亲自记录。

如何使用Windows Script Host/PowerShell/任何其他方式实现?

5个回答

10

正如Daren Thomas所说,使用nmap。

 nmap -sP 192.168.1.1/24

扫描192.168.1.*网络。

 nmap -O 192.168.1.1/24

获取用户操作系统。有关更多信息,请阅读manpage。

 man nmap

敬意


1
我找不到让 nmap 返回 MAC 地址的选项。 - npdoty
@npdoty:正如Mana所提到的:nmap -O 192.168.1.1/24会返回MAC地址(以及其他信息),请注意您可能需要以root或sudo身份才能执行此操作。 - Iam Zesh

8
arp -a

这将获取当前机器在网络上的所有信息。

(我把这个作为第二个选项,因为nmap并不是普遍安装的工具)。


3
但是,只有当您对网络段上的每台计算机都有路由时,ARP 才能起作用;因此,您需要先对每个 IP 进行 ping! - blowdart
你可能首先可以使用广播ping,但这取决于机器是否响应ping。 - Matthew Schinckel

2
如果您使用DHCP,则服务器将向您提供所有此信息的列表。
这个网站有一个很好的教程,介绍如何使用powershell获取网络信息:http://www.powershellpro.com/powershell-tutorial-introduction/powershell-scripting-with-wmi/
如果您需要快速获取计算机名称列表,可以使用"net view"。还可以查看nbmac,尽管我不确定它在XP下的工作状态。另一个选择是使用nbtstat -a(一旦您使用net view列出了工作站)。

1

在PowerShell中:

function Explore-Net($subnet, [int[]]$range){
    $range | % { test-connection "$subnet.$_" -count 1 -erroraction silentlycontinue} | select -Property address | % {[net.dns]::gethostbyaddress($_.address)}
}

例子:

Explore-Net 192.168.2 @(3..10)

1
在PowerShell中,您可以执行以下操作: $computers = "server1","server2","server3"
Get-WmiObject Win32_NetworkAdapterConfiguration -computer $computers -filter "IPEnabled ='true'" | select __Server,IPAddress,MACAddress

事实证明,在我的特定局域网设置中,在Linux系统上使用nmap要容易得多,即使nmap无法找出NetBIOS名称。当然,我应该花些时间学习PowerShell和WMI,只是为了好玩。 - agnul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接