加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 获取链接速度 – Win32_PerfRawData_Tcpip_NetworkIn

发布时间:2020-12-13 20:45:16 所属栏目:Windows 来源:网络整理
导读:我找到了 Determining the network connection link speed 现在我试图将Win32_PerfRawData_Tcpip_NetworkInterface中的数据与 Win32_NetworkAdapter(或Win32_NetworkAdapterConfiguration). 在类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

===

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

# I got the DeviceID of a NIC and use it to get the "NetConnection ID":

$objWMIService = Win32::OLE->GetObject("winmgmts:\$computerrootCIMV2") 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'",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
好.感谢您发布短脚本.当你正在努力的时候,我正在使用 DBD::WMI跟踪一个不同的轨道并挖掘文档,看看你是否遗漏了任何东西.

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

#!/usr/bin/perl

use strict; use warnings;

use DBI;
use Data::Dumper;

my $computer = '.';
($computer) = @ARGV if @ARGV;

my $dbh = DBI->connect("dbi:WMI:$computer",undef,{ RaiseError => 1},);

print "=== From Win32_NetworkAdapter ===n";

my $name = $dbh->selectall_arrayref(
    'SELECT * FROM Win32_NetworkAdapter WHERE DeviceID = 11'
)->[0]->[0]->{Name};

(my $canonname = $name) =~ s/[^A-Za-z0-9]/_/g;

print "Name: $namenCanonical name: $canonnamenn";

my $sth = $dbh->prepare(
    'SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface'
);

$sth->execute;

print "=== From Win32_PerfRawData_Tcpip_NetworkInterface ===n";

while (defined (my $adapter = $sth->fetchrow_arrayref )) {
    my $conf = $adapter->[0];
    my $perfname = $conf->{Name};
    (my $canonperfname = $perfname) =~ s/[^A-Za-z0-9]/_/g;
    if ( $canonperfname =~ /^$canonname/ ) {
        print "Name: $perfnamenCanonical name: $canonperfnamen";
        print $conf->{CurrentBandwidth},"nn";
        last;
    }
}

输出:

=== From Win32_NetworkAdapter ===
Name: Intel(R) PRO/Wireless 3945ABG Network Connection
Canonical name: Intel_R__PRO_Wireless_3945ABG_Network_Connection

=== From Win32_PerfRawData_Tcpip_NetworkInterface ===
Name: Intel[R] PRO_Wireless 3945ABG Network Connection - Packet Scheduler Miniport
Canonical name: Intel_R__PRO_Wireless_3945ABG_Network_Connection___Packet_Scheduler_Miniport
54000000

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读