windows – 获取链接速度 – Win32_PerfRawData_Tcpip_NetworkInterface

前端之家收集整理的这篇文章主要介绍了windows – 获取链接速度 – Win32_PerfRawData_Tcpip_NetworkInterface前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我找到了 Determining the network connection link speed
现在我试图将Win32_PerfRawData_Tcpip_NetworkInterface中的数据与
Win32_NetworkAdapter(或Win32_NetworkAdapterConfiguration).

在类Win32_PerfRawData_Tcpip_NetworkInterface我没有看到任何
我可以用来引用的索引或唯一键
Win32_NetworkAdapterConfiguration或Win32_NetworkAdapter.
我尝试使用theNameinWin32_PerfRawData_Tcpip_NetworkInterface
和Win32_NetworkAdapter`,但它们看起来仍然不同.

例如

Name: Intel(R) PRO/1000 PL Network
Connection

VS

Name: Intel[R] PRO_1000 PL Network
Connection

任何提示

先谢谢你,

Milde

===

也许那段代码会帮助你帮助我们:)

  1. # I got the DeviceID of a NIC and use it to get the "NetConnection ID":
  2.  
  3. $objWMIService = Win32::OLE->GetObject("winmgmts:\\\\$computer\\root\\CIMV2") or die "Exit: WMI connection Failed. \n";
  4. $colNicSetts = $objWMIService->ExecQuery(
  5. "SELECT * FROM Win32_NetworkAdapter Where DeviceID = '$ID'","WQL",wbemFlagReturnImmediately | wbemFlagForwardOnly);
  6.  
  7. foreach my $objItem (in $colNicSetts){
  8. $NetConnID = $objItem->{NetConnectionID};
  9. }
  10.  
  11. # => $NetConnID stores "Intel(R) PRO/1000 PL Network Connection".
  12. # Now I tried to get the Link Speed with sth. like that:
  13.  
  14. $collItems = $objWMIService->ExecQuery(
  15. "SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface Where Name = '$NetConnID'",wbemFlagReturnImmediately | wbemFlagForwardOnly);
  16. foreach my $objItem (in $collItems){
  17. $LinkSpeed = $objItem->{CurrentBandwidth};
  18. }
  19. # "Win32_PerfRawData_Tcpip_NetworkInterface" contains "Intel[R] PRO_1000 PL Network" Connection
  20. # "Intel(R) PRO/1000 PL Network Connection" != Intel[R] PRO_1000 PL Network Connection
  21. # => $LinkSpeed empty
好.感谢您发布短脚本.当你正在努力的时候,我正在使用 DBD::WMI跟踪一个不同的轨道并挖掘文档,看看你是否遗漏了任何东西.

我找不到比规范名称更好的方法(必须有一个):

  1. #!/usr/bin/perl
  2.  
  3. use strict; use warnings;
  4.  
  5. use DBI;
  6. use Data::Dumper;
  7.  
  8. my $computer = '.';
  9. ($computer) = @ARGV if @ARGV;
  10.  
  11. my $dbh = DBI->connect("dbi:WMI:$computer",undef,{ RaiseError => 1},);
  12.  
  13. print "=== From Win32_NetworkAdapter ===\n";
  14.  
  15. my $name = $dbh->selectall_arrayref(
  16. 'SELECT * FROM Win32_NetworkAdapter WHERE DeviceID = 11'
  17. )->[0]->[0]->{Name};
  18.  
  19. (my $canonname = $name) =~ s/[^A-Za-z0-9]/_/g;
  20.  
  21. print "Name: $name\nCanonical name: $canonname\n\n";
  22.  
  23. my $sth = $dbh->prepare(
  24. 'SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface'
  25. );
  26.  
  27. $sth->execute;
  28.  
  29. print "=== From Win32_PerfRawData_Tcpip_NetworkInterface ===\n";
  30.  
  31. while (defined (my $adapter = $sth->fetchrow_arrayref )) {
  32. my $conf = $adapter->[0];
  33. my $perfname = $conf->{Name};
  34. (my $canonperfname = $perfname) =~ s/[^A-Za-z0-9]/_/g;
  35. if ( $canonperfname =~ /^$canonname/ ) {
  36. print "Name: $perfname\nCanonical name: $canonperfname\n";
  37. print $conf->{CurrentBandwidth},"\n\n";
  38. last;
  39. }
  40. }

输出

  1. === From Win32_NetworkAdapter ===
  2. Name: Intel(R) PRO/Wireless 3945ABG Network Connection
  3. Canonical name: Intel_R__PRO_Wireless_3945ABG_Network_Connection
  4.  
  5. === From Win32_PerfRawData_Tcpip_NetworkInterface ===
  6. Name: Intel[R] PRO_Wireless 3945ABG Network Connection - Packet Scheduler Miniport
  7. Canonical name: Intel_R__PRO_Wireless_3945ABG_Network_Connection___Packet_Scheduler_Miniport
  8. 54000000

猜你在找的Windows相关文章