获取适配器带宽和可用IP地址

时间:2016-11-14 04:10:07

标签: c++ wmi wmi-query

有人能告诉我如何获得网络适配器中的可用带宽和IP地址。 首先,我将告诉我做了什么。我尝试使用 Win32_PerfFormattedData Win32_PerfFormattedData_Tcpip_NetworkInterface 类的 Windows Management Instrumentation(WMI)查询。 Win32_PerfFormattedData - 从这个类我可以获得适配器的当前带宽。 Win32_PerfFormattedData_Tcpip_NetworkInterface - 从这个类我可以获得适配器中的ip地址。 问题是,我不知道如何找到两者之间的关系如果我在系统中有多个网络适配器,因为我没有找到这两个类属性之间的任何常见属性。请帮我解决这个问题。建议如果有任何其他方法来获取当前带宽和网络适配器的IP地址。

1 个答案:

答案 0 :(得分:0)

改为使用Win32_NetworkAdapterWin32_NetworkAdapterConfiguration。这是简单的PowerShell脚本示例:

$objWMi = get-wmiobject -Query "Select * from Win32_NetworkAdapter where PhysicalAdapter = True"

foreach ($obj in $objWmi)
{
    write-host "AdapterType:" $obj.AdapterType
    write-host "Caption:" $obj.Caption
    write-host "CommunicationStatus:" $obj.CommunicationStatus
    write-host "Description:" $obj.Description
    write-host "DeviceName:" $obj.DeviceName
    write-host "MACAddress:" $obj.MACAddress
    write-host "Speed:" $obj.Speed
    write-host "Name:" $obj.Name

    $config = get-wmiobject -Query "select * from Win32_NetworkAdapterConfiguration where InterfaceIndex = $($obj.InterfaceIndex)"
    foreach($data in $config)
    {
        write-host "NetworkAddress:" $config.IPAddress
    }

    write-host
    write-host "########"
    write-host
}

在Windows 8及更高版本中,您应使用MSFT_NetAdapter类而不是Win32_NetworkAdapter。此外,Win32_NetworkAdapterConfiguration仅返回IPv4配置数据。有关其他信息,请参阅this