ZetCode

VBScript Win32_NetworkAdapter 类

最后修改于 2025 年 4 月 9 日

VBScript 中的 Win32_NetworkAdapter 类通过 WMI 提供了对网络适配器属性的访问。它代表了 Windows 系统中的网络接口硬件和软件。此类提供了有关计算机上安装的每个网络适配器的详细信息。

Win32_NetworkAdapter 包含 MAC 地址、适配器类型、速度和连接状态等属性。它是 Windows Management Instrumentation (WMI) 基础架构的一部分。本教程通过实际示例涵盖了该类,以演示其用法。

Win32_NetworkAdapter 类概述

Win32_NetworkAdapter 类包含 50 多个属性,用于描述网络接口。这些属性包括物理和逻辑网络适配器。该类提供对适配器配置的只读访问。

关键属性包括 NameMACAddressSpeedNetConnectionStatus。可以使用 VBScript 的 GetObject 函数通过 WMI 访问该类。理解此类有助于编写网络配置脚本。

列出所有网络适配器

此示例演示了如何检索系统上所有网络适配器的基本信息。它显示了适配器名称、MAC 地址和连接状态。该脚本连接到 WMI 并查询 Win32_NetworkAdapter 类。

list_adapters.vbs
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")

For Each objAdapter in colAdapters
    WScript.Echo "Name: " & objAdapter.Name
    WScript.Echo "MAC Address: " & objAdapter.MACAddress
    WScript.Echo "Status: " & objAdapter.NetConnectionStatus
    WScript.Echo "---------------------"
Next

该脚本创建一个 WMI 连接并执行对所有网络适配器的查询。然后,它遍历每个适配器并显示关键属性。输出包括适配器名称、MAC 地址和当前的连接状态。

过滤物理网络适配器

此示例演示了如何仅过滤物理网络适配器。许多系统都有不是实际硬件的虚拟适配器。该脚本使用 WQL 查询来排除虚拟和非物理适配器。

physical_adapters.vbs
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
strQuery = "SELECT * FROM Win32_NetworkAdapter WHERE PhysicalAdapter = True"
Set colAdapters = objWMIService.ExecQuery(strQuery)

For Each objAdapter in colAdapters
    WScript.Echo "Physical Adapter: " & objAdapter.Name
    WScript.Echo "Adapter Type: " & objAdapter.AdapterType
    WScript.Echo "Speed: " & objAdapter.Speed / 1000000 & " Mbps"
    WScript.Echo "---------------------"
Next

该脚本向 WQL 查询添加 WHERE 子句以过滤物理适配器。然后,它显示每个物理适配器的名称、类型和速度。速度从比特转换为兆比特以便于阅读。

检查网络连接状态

此示例演示了如何检查网络适配器的连接状态。它将数字状态码转换为人类可读的文本。该脚本有助于识别当前哪些适配器已连接。

connection_status.vbs
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")

For Each objAdapter in colAdapters
    Select Case objAdapter.NetConnectionStatus
        Case 0 statusText = "Disconnected"
        Case 1 statusText = "Connecting"
        Case 2 statusText = "Connected"
        Case 3 statusText = "Disconnecting"
        Case 4 statusText = "Hardware not present"
        Case 5 statusText = "Hardware disabled"
        Case 6 statusText = "Hardware malfunction"
        Case 7 statusText = "Media disconnected"
        Case 8 statusText = "Authenticating"
        Case 9 statusText = "Authentication succeeded"
        Case 10 statusText = "Authentication failed"
        Case Else statusText = "Unknown status"
    End Select
    
    WScript.Echo objAdapter.Name & ": " & statusText
Next

该脚本检索所有网络适配器并检查它们的连接状态。它使用 Select Case 语句来转换数字状态码。每个适配器的名称和可读状态都会在输出中显示。

查找具有 IP 地址的适配器

此示例演示了如何查找已分配 IP 地址的网络适配器。它结合了 Win32_NetworkAdapter 和 Win32_NetworkAdapter-Configuration 类的信息。该脚本显示具有活动 IP 配置的适配器。

adapters_with_ip.vbs
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
strQuery = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True"
Set colConfigs = objWMIService.ExecQuery(strQuery)

For Each objConfig in colConfigs
    Set colAdapters = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_NetworkAdapter WHERE DeviceID = " & objConfig.Index)
    
    For Each objAdapter in colAdapters
        WScript.Echo "Adapter: " & objAdapter.Name
        WScript.Echo "MAC: " & objAdapter.MACAddress
        WScript.Echo "IP: " & Join(objConfig.IPAddress, ", ")
        WScript.Echo "---------------------"
    Next
Next

该脚本首先查询已启用的网络适配器配置。对于每个配置,它通过 DeviceID 查找相应的适配器。输出显示适配器名称、MAC 地址和已分配的 IP 地址。这有助于识别活动的网络接口。

禁用网络适配器

这个高级示例演示了如何使用 WMI 禁用网络适配器。它首先列出可用的适配器,然后禁用选定的适配器。请注意,这需要管理员权限。

disable_adapter.vbs
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter")

' List adapters first
WScript.Echo "Available Network Adapters:"
i = 1
For Each objAdapter in colAdapters
    WScript.Echo i & ") " & objAdapter.Name
    i = i + 1
Next

' Prompt for adapter to disable
adapterIndex = InputBox("Enter the number of the adapter to disable:")
If adapterIndex = "" Then WScript.Quit

' Find and disable the selected adapter
i = 1
For Each objAdapter in colAdapters
    If i = CInt(adapterIndex) Then
        WScript.Echo "Disabling " & objAdapter.Name & "..."
        errDisable = objAdapter.Disable()
        If errDisable = 0 Then
            WScript.Echo "Adapter disabled successfully"
        Else
            WScript.Echo "Error disabling adapter: " & errDisable
        End If
        Exit For
    End If
    i = i + 1
Next

该脚本首先列出所有可用的网络适配器及其编号。它提示用户通过编号选择适配器。然后使用 Disable 方法禁用所选适配器。错误处理会检查操作是否成功。

来源

Win32_NetworkAdapter 文档

在本文中,我们探讨了 VBScript 中的 Win32_NetworkAdapter 类,涵盖了其属性和实际应用。从列出适配器到检查状态和管理连接,这些示例展示了强大的网络管理功能。通过这些知识,您可以创建高级网络配置脚本。

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有多年的编程经验。自 2007 年以来,我一直在撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有八年以上的经验。

列出所有 VBScript 教程