我正在使用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,但我不能进行屏幕抓取,因为应用程序需要使用任意语言。谢谢!
显然,这里的基础问题是,WMI提供程序的实现是由NIC供应商来处理的,而不是操作系统——因此,某些NIC可能支持某些设置,而其他(如您所发现的)可能不支持。
对于链接速度,请查看 this 对于一些可以在大多数NIC上工作的WMI脚本。
对于复式,我认为你运气不好,至少根据 topic .看看这个线程中的最后一篇文章——在某些情况下,它似乎非常具体地描述了如何绕过限制,但不适用于所有的NIC。