我发现Determining the network connection link speed ,现在我想将数据从Win32_PerfRawData_Tcpip_NetworkInterface与 Win32_NetworkAdapter(或Win32_NetworkAdapterConfiguration的)相关。获取链接速度 - Win32_PerfRawData_Tcpip_NetworkInterface
在课程Win32_PerfRawData_Tcpip_NetworkInterface
我看不出有任何 索引或唯一的关键,我可以使用引用 Win32_NetworkAdapterConfiguration
或Win32_NetworkAdapter. I tried to use the
名称in
Win32_PerfRawData_Tcpip_NetworkInterface and
Win32_NetworkAdapter`,但他们仍然看起来不同。
例如
名称:英特尔(R)PRO/1000 PL网络 连接
VS
名称:英特尔[R] PRO_1000 PL网络 连接
不限提示?
谢谢你在前进,
Milde
===
也许这段代码会帮你帮我家伙:)
# I got the DeviceID of a NIC and use it to get the "NetConnection ID":
$objWMIService = Win32::OLE->GetObject("winmgmts:\\\\$computer\\root\\CIMV2") or die "Exit: WMI connection failed. \n";
$colNicSetts = $objWMIService->ExecQuery(
"SELECT * FROM Win32_NetworkAdapter Where DeviceID = '$ID'", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
foreach my $objItem (in $colNicSetts){
$NetConnID = $objItem->{NetConnectionID};
}
# => $NetConnID stores "Intel(R) PRO/1000 PL Network Connection".
# Now I tried to get the Link Speed with sth. like that:
$collItems = $objWMIService->ExecQuery(
"SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface Where Name = '$NetConnID'", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
foreach my $objItem (in $collItems){
$LinkSpeed = $objItem->{CurrentBandwidth};
}
# "Win32_PerfRawData_Tcpip_NetworkInterface" contains "Intel[R] PRO_1000 PL Network" Connection
# "Intel(R) PRO/1000 PL Network Connection" != Intel[R] PRO_1000 PL Network Connection
# => $LinkSpeed empty
你可以发布短Perl脚本,告诉您如何得到这些信息?事实上,在帮助那些不在同一问题上工作的人开始工作时,你的帖子中很少有用的信息。您甚至不会告诉我们哪个适配器字符串来自哪个来源等等。您可以尝试通过将所有非单词字符转换为'_'来对字符串进行规范化,但这是最后的手段。 – 2009-12-02 13:33:51
添加了一些代码,希望它有帮助。我也想过通配符,但对我来说似乎有点不安全。 – Milde 2009-12-02 14:26:48
我相信,这有点晚...但是有关于命名约定的一些注意事项,请参见http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.instancename(v = vs.110 ).aspx - “如果实例名称是自动生成的并且可能包含字符”(“,”)“,”#“,”\“或”/“,请使用下表中的字符映射。但是,这无助于映射像isatap,{GUID}或索引后缀这样的疯狂名称。 – mikalai 2014-09-30 21:43:12