AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 816722
Accepted
ArisKortex
ArisKortex
Asked: 2016-11-24 12:27:14 +0800 CST2016-11-24 12:27:14 +0800 CST 2016-11-24 12:27:14 +0800 CST

获取 Windows 机器的 MAC 地址

  • 772

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

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

1) getmac - 一般都很好,它返回 MAC 地址的格式也适合我,但它在过去给我带来了问题。

2) WMIC - 一般也很好,但过去也给我带来了问题,
而且它的性能落后(尤其是在低规格机器上)。

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

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

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

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

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

windows shell arp mac-address shell-scripting
  • 4 4 个回答
  • 181 Views

4 个回答

  • Voted
  1. Best Answer
    AtomicFireball
    2016-11-26T13:49:13+08:002016-11-26T13:49:13+08:00

    您可以使用 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。

    • 1
  2. Mr. Shakespeare
    2016-11-26T14:29:21+08:002016-11-26T14:29:21+08:00

    1.打开CMD /a

    2.Typenbstat -A后跟{机器IP}

    3."输入

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

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

    • 0
  3. person
    2016-11-26T16:46:26+08:002016-11-26T16:46:26+08:00

    它可能有点超出您可以做的范围,但如果您拥有所有机器的 IP,它就是完整的证明和简单的。

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

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

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

    • 0
  4. Charles Burge
    2016-11-26T17:55:35+08:002016-11-26T17:55:35+08:00

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

    • 0

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve