1

我正在使用 WMI 来检测有关网络适配器状态的许多项目。我需要找出的东西包括(a)速度和(b)双工。

我已经能够通过使用 WMI 和以下 Python 代码来检测网络适配器的速度:

from pycom.client import wmi

dev_name = r"\\DEVICE\\{287EB4BB-5C2A-4108-B377-15E1D0B0E760}"
query1 = """
SELECT * 
FROM  MSNdis_EnumerateAdapter
WHERE DeviceName = '%s'""" % dev_name


wmi_ndis = wmi.WMI("root\\WMI")
results = wmi_ndis.ExecQuery(query1)
instance_name = results[0].InstanceName

del results

query2="""
SELECT * 
FROM MSNdis_LinkSpeed
WHERE InstanceName='%s'""" % instance_name
results = wmi_ndis.ExecQuery(query2)
linkspeed = results[0].NdisLinkSpeed

del results

print instance_name, linkspeed

del instance_name
del linkspeed
del wmi_ndis

我想要的数据似乎有一个完美的类:MSNDis_LinkParameters。但是,此表似乎没有填充。Win32_NetworkAdapter 中也有值,但它们也未填充。

我很乐意使用本机 C API 或 WMI,但我不能进行屏幕抓取,因为应用程序需要使用任意语言。谢谢!

4

1 回答 1

0

显然,这里的根本问题是 WMI 提供程序的实现是由 NIC 供应商处理的,而不是由操作系统处理的——所以一些 NIC 可能支持某些设置,而(正如您所发现的)其他不支持。

对于链接速度,请查看部分以了解可能适用于大多数 NIC 的一些 WMI 脚本。

对于双工,我认为你不走运,至少根据topic。查看该线程中的最后一篇文章——在某些情况下如何绕过限制似乎非常具体,但不适用于所有 NIC。

于 2009-09-29T18:28:37.413 回答