Назад | Перейти на главную страницу

Получение MAC-адреса Windows-машины

Хорошо, ребята, это не обычный вопрос, на который легко ответить ...

Мне нужно получить MAC-адрес с машины под управлением Windows (от XP до Server2012). У меня есть следующий вариант, который я могу использовать:

1) getmac - Хорошо в целом, а также формат, в котором он возвращает MAC-адрес, меня устраивает, но в прошлом это вызывало у меня проблемы.

2) WMIC - в целом тоже нормально, но также вызывал у меня проблемы в
прошлое и, кроме того, отстает в производительности (особенно на машинах с низкими характеристиками).

3) ipconfing - Традиционный способ получения его из вывода команд. Может работать, но разбор вывода может быть обременительным, если существует более одного интерфейса.

Итак, вопрос следующий. Какая лучшая альтернатива всему вышеперечисленному для получения MAC-адреса машины. Имейте в виду, что я буду вызывать любую утилиту через сценарий оболочки (что бы это ни добавляло к уравнению), и что я развертываю ее в нескольких разных выпусках Windows (от Professional до встроенных 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 для Windows NT 4
Скриптовый движок: любой
Вкратце: работает в Windows NT 4 SP4 (с WMI CORE 1.5), Windows 2000 или новее. Не работает в Windows 95, 98 или ME.

В Linux есть отличная утилита под названием arp-scan который может сканировать вашу сеть и генерировать таблицу с MAC-адресами и соответствующими им IP-адресами. К сожалению, он не входит в комплект Knoppix. Я не знаю о других живых дистрибутивах.

Это может немного выходить за рамки того, что вы можете сделать, но это полное доказательство и простота, если у вас есть IP-адреса всех машин.

Перейдите к базовому коммутатору / маршрутизатору или любому устройству, имеющему интерфейс в той же подсети (ах). Если у вас нет доступа к маршрутизатору / коммутатору, вы можете сделать это из окна Windows в той же подсети.

Отправьте эхо-запрос на все IP-адреса или выполните проверку связи, затем распечатайте таблицу arp. На этом этапе все, что вам нужно сделать, это скопировать и вставить это в свой любимый текстовый манипулятор (notepadd ++, excel, linux и т. Д.) И отфильтровать строки, которые вам не нужны.

Не нужно полагаться на надоедливые командлеты Windows, которые не всегда совместимы или случайно выходят из строя, и этот метод будет работать для всех устройств, а не только для Windows.

1. откройте CMD /a

2. Тип nbstat -A за которым следует {IP-адрес машины}

3. "Enter"

4.Output = Информация NET-BIOS машины, включая MAC ID

Вы также можете использовать -a переключатель и machine name (если известно)