如何通过Windows命令行检测网络连接的速度(快速或千兆以太网)


40

为了解决网络问题,我想查询给定网络适配器的实际网络“速度”,在Windows下打开网络连接的“状态”时可以看到: 速度设定

但是,我想通过命令行或一个小的单独工具来查询此信息,因为我需要为多个网络连接请求此信息,并且不信任用户正确地获取信息。网卡的“ Speed / Duplux”设置始终为“ Auto Negotiate”,因此我不能从中得知我将获得什么“ Speed”。

Answers:


61

尝试以下WMI查询:

wmic NIC where NetEnabled=true get Name, Speed

这样可以提高所有活动网络连接的速度。

编辑:正如已经指出的那样,必须修改此查询才能在PowerShell中使用(尽管在cmd.exe中可以正常工作)。再说一次,在PowerShell中,您根本不需要使用WMI:

Get-NetAdapter | where Status -eq "Up" | select InterfaceDescription, LinkSpeed

另外,它以一种很好的,人类可读的格式(例如“ 1 Gbps”)提供了速度,而不是每秒的位数。


1
如果您在NetEnabled = true的情况下使用了wic NIC,请获取名称,速度| sed -es / 000000000 / Gbit / | SED -es / 000000 \ B /兆位/
杰米·库克

2
该WMI查询在Windows 8 cmd中有效,但在Windows 7中,我必须使用此功能:wmic NIC,其中“ NetEnabled ='true'”得到“ Name,Speed”似乎cmd shell试图解释','作为空格或命令分隔符。PowerShell也有此问题。感谢您将我带入正确的道路!
花花公子

正是我所需要的!你是一个伟大的人;+1(PS是每秒位数吗?)
Cardinal System

1
@CardinalSystem是的,它是每秒的位数。
Indrek

6

从Indrek的答案:

Wmic NIC,其中NetEnabled = true获取名称,速度

将在命令提示符下工作。对于PowerShell,请使用:

wmic NIC where "NetEnabled='true'" get "Name,Speed"

where子句以及任何get属性(如Name和Speed)必须用双引号引起并用逗号分隔)。

//编辑#1:GET表达式Name,Speed必须用单引号引起来。获取表达式之间可能没有空格


那很奇怪。它不带引号就可以使用。
DavidPostill

@DavidPostill它会破坏PS中的GET表达式(一旦添加第二项)。
路易斯

1
啊。已确认。您应该在答案中添加以下内容:对于PowerShell,引号是必需的,而在cmd shell中则不需要引号。
DavidPostill

2

我想为您的贡献做出贡献。如果需要在Windows中运行sed,则可以下载UnxUtils,然后将sed.exe解压缩到c:\ Windows \ System32

然后,当您按照建议使用sed进行管道传输时,它就可以工作。(Windows 8.1)

谢谢。

wmic NIC where NetEnabled=true get Name, Speed | sed -e s/000000000/Gbit/ | sed -e s/000000\b/Mbit/

\bsed在Cygwin 中无法使用。对我有用的是[^0]。或者,请完整填写:s/000000[^0]/Mbit/
pepoluan '16

否则将吞下000000之后的第一个非零字符,这可能不是您想要的。
Wodin '16

-1

您还可以使用:

cat /sys/class/net/enp6s0/speed

或者在eth0时,确定您的速度连接(100或1000):

cat /sys/class/net/eth0/speed


那为什么答案很低呢?
绿树

1
我不知道,这里:S似乎仍然为零。OW mabye因为这是唯一的Linux ..
梅尔罗伊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.