好吧,这不是一般容易回答的问题标题可能意味着…
我需要从运行Windows的机器(从XP到Server2012)获取MAC地址。 我可以使用以下选项:
1)getmac – 总的来说很好,而且它返回MAC地址的格式也适合我,但是这在过去造成了我的问题。
2)WMIC – 总体来说还不错,但也造成了我的问题
而且在性能方面还比较落后(特别是在低规格的机器上)。
3)ipconfing – 从命令输出中检索它的传统方式。 如果有更多的接口存在,可以工作,但parsing输出可能是麻烦的。
所以问题是以下。 为了获得一台机器的MAC地址,以上所有的最佳select是什么? 请记住,我将通过一个shell脚本调用任何实用程序(不pipe是否加上这个等式),而且我正在部署不同的Windows版本(从Professional到POSembedded)。
由于XP不支持Powershell,显然是不可能的。 另外我之所以想避免WMIC,是因为我遇到了可能会导致安装不当的问题(导致重大问题),以及2)因为某些Windows版本(例如embedded式XP)不包含它。
我试图通过使用ARP表获得它,但据我所见,它不会列出本地计算机的MAC地址。
任何有用的提示或想法是受欢迎的。
你可以使用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
networking:TCP / IP
客户端软件:Windows NT 4的WMI CORE 1.5
脚本引擎:任何
总结:适用于Windows NT 4 SP4(带有WMI CORE 1.5),Windows 2000或更高版本。 在Windows 95,98或ME中不起作用。
1.打开
CMD /a2.
nbstat -A后跟{机器IP}3.“input
4.输出=机器NET-BIOS信息,包括MAC ID
您也可以使用-a开关和machine name (如果已知)
它可能有点超出你可以做的范围,但是如果你有所有机器的IP,那么它是充分的certificate和简单的。
转到核心交换机/路由器,或任何具有相同子网接口的设备。 如果你没有访问路由器/交换机,你可以从同一个子网中的一个窗口框中进行访问。
Ping所有的IP或者执行ping扫描,然后打印arp表。 在那一刻,你所要做的就是复制并粘贴到你最喜欢的文本操作器(notepad ++,excel,linux等),并过滤掉你不需要的行。
不需要依赖那些并不总是兼容或者随机失败的讨厌的windows cmdlet,这种方法可以用于所有的设备,而不仅仅是windows。
Linux有一个很好的实用程序叫做arp-scan ,它可以扫描你的networking,并生成一个MAC地址和相应的IP地址表。 可悲的是,它不包含在Knoppix中。 我不知道其他的现场发行。