获取 Windows 计算机的 MAC 地址

获取 Windows 计算机的 MAC 地址

好吧伙计们,这不是标题所暗示的通常容易回答的问题......

我需要从运行 Windows(从 XP 到 Server2012)的计算机获取 MAC 地址。我可以使用以下选项:

1) getmac - 总体来说不错,而且它返回 MAC 地址的格式也适合我,但是过去它曾给我带来过麻烦。

2)WMIC——总体来说还不错,但过去也给我带来过问题
,而且性能滞后(尤其是在低规格的机器上)。

3) ipconfing - 从命令输出中检索它的传统方法。可以工作,但如果存在多个接口,解析输出可能会很麻烦。

因此,问题如下。为了获取机器的 MAC 地址,上述所有方法的最佳替代方案是什么。请记住,我将通过 shell 脚本调用任何实用程序(无论这加起来是多少),并且我将在几个不同的 Windows 版本(从专业版到嵌入式 POS)上进行部署。

Powershell 显然不行,因为 XP 不支持它。另外,我想避免使用 WMIC 的原因是 1) 我遇到过许多错误的安装(导致严重问题)和 2) 因为某些 Windows 版本(例如嵌入式 XP)不包含它。

我曾尝试使用 ARP 表来获取它,但据我所知,它不会列出本地机器的 MAC 地址。

欢迎任何有用的提示或想法。

答案1

您可以使用 VBScript。代码http://www.robvanderwoude.com/vbstech_network_mac.php可以进行修改以获取您需要的信息。

VBScript 代码:

intCount = 0
strMAC   = ""
' We're interested in MAC addresses of physical adapters only
strQuery = "SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID > ''"

Set objWMIService = GetObject( "winmgmts://./root/CIMV2" )
Set colItems      = objWMIService.ExecQuery( strQuery, "WQL", 48 )

For Each objItem In colItems
    If InStr( strMAC, objItem.MACAddress ) = 0 Then
        strMAC   = strMAC & "," & objItem.MACAddress
        intCount = intCount + 1
    End If
Next

' Remove leading comma
If intCount > 0 Then strMAC = Mid( strMAC, 2 )

Select Case intCount
    Case 0
        WScript.Echo "No MAC Addresses were found"
    Case 1
        WScript.Echo "MAC Address: " & strMAC
    Case Else
        WScript.Echo "MAC Addresses: " & strMAC
End Select

要求:Windows 版本:Windows NT 4 SP4、2000、XP、Server 2003 或 Vista
网络:TCP/IP
客户端软件:适用于 Windows NT 4 的 WMI CORE 1.5
脚本引擎:任意
总结:适用于 Windows NT 4 SP4(带 WMI CORE 1.5)、Windows 2000 或更高版本。不适用于 Windows 95、98 或 ME。

答案2

1.打开CMD /a

2.nbstat -A输入{机器IP}

3.“输入

4.输出 = 机器 NET-BIOS 信息,包括 MAC ID

您也可以使用-a开关和machine name(如果知道)

答案3

这可能有点超出您所能做的范围,但如果您拥有所有机器的 IP,它就完全可靠且简单。

转到核心交换机/路由器,或任何在同一子网中具有接口的设备。如果您无法访问路由器/交换机,则可以从同一子网中的 Windows 框执行此操作。

对所有 IP 执行 ping 操作或执行 ping 扫描,然后打印 arp 表。此时,您所要做的就是将其复制并粘贴到您最喜欢的文本处理程序(notepadd++、excel、linux 等)中,然后过滤掉您不需要的行。

无需依赖并不总是兼容或随机失败的讨厌的 Windows cmdlet,并且此方法适用于所有设备而不仅仅是 Windows。

答案4

Linux 有一个很棒的实用程序,名为arp-scan,它可以扫描您的网络并生成一个包含 MAC 地址及其对应 IP 地址的表格。遗憾的是,它没有包含在 Knoppix 中。我不知道其他实时发行版是否如此。

相关内容