獲取 Windows 機器的 MAC 地址
好的,伙計們,這不是標題可能暗示的通常容易回答的問題……
我需要從執行 Windows 的機器(從 XP 到 Server2012)獲取 MAC 地址。我可以使用以下選項:
getmac - 一般都很好,它返回 MAC 地址的格式也適合我,但它在過去給我帶來了問題。
WMIC - 一般也很好,但過去也給我帶來了問題,
而且它的性能落後(尤其是在低規格機器上)。
- ipconfing - 從命令輸出中檢索它的傳統方式。可以工作,但如果存在多個介面,解析輸出可能會很麻煩。
所以問題如下。為了獲得機器的 MAC 地址,上述所有方法的最佳替代方法是什麼。請記住,我將通過 shell 腳本呼叫任何實用程序(無論這增加了等式),並且我正在幾個不同的 Windows 版本(從專業版到嵌入式 POS)上進行部署。
Powershell 顯然是不可能的,因為 XP 不支持它。另外我想避免使用 WMIC 的原因是 1)我遇到的安裝錯誤(導致重大問題)和 2)因為某些 Windows 版本(例如 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
網路:TCP/IP
客戶端軟體:WMI CORE 1.5 for Windows NT 4
腳本引擎:任意
總結:在 Windows NT 4 SP4 中工作(使用 WMI CORE 1.5)、Windows 2000 或更高版本。不適用於 Windows 95、98 或 ME。