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プロバイダーの実装がOSではなくNICベンダーによって処理されることです。そのため、一部のNICは一部の設定をサポートしますが、他のNICはサポートしません。

リンク速度については、ほとんどのNICで機能する可能性のあるいくつかのWMIスクリプトについて これを確認してください。

デュプレックスの場合、少なくともトピックによれば、運が悪いと思います。そのスレッドの最後の投稿を見てください。場合によっては制限を回避する方法がかなり具体的であるように見えますが、すべてのNICで機能するとは限りません。

于 2009-09-29T18:28:37.413 に答える