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

asd*_*ael 43 networking windows command-line

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

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

Ind*_*rek 66

试试这个 WMI 查询:

wmic NIC where NetEnabled=true get Name,Speed
Run Code Online (Sandbox Code Playgroud)

这应该为您提供所有活动网络连接的速度。

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

Get-NetAdapter | where Status -eq "Up" | select InterfaceDescription, LinkSpeed
Run Code Online (Sandbox Code Playgroud)

作为奖励,这提供了一种很好的、​​人类可读的格式(例如“1 Gbps”)的速度,而不是每秒的位数。

  • 该 WMI 查询在 Windows 8 cmd 中有效,但在 Windows 7 中,我不得不使用这个: wmic NIC where "NetEnabled='true'" get "Name,Speed" 似乎 cmd shell 试图解释 ','作为空格或命令分隔符。PowerShell 也有这个问题。谢谢你让我走上正确的道路! (2认同)

Tom*_*Tom 6

来自 Indrek 的回答:

wmic NIC where NetEnabled=true 获取名称、速度

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

wmic NIC where "NetEnabled='true'" get "Name,Speed"
Run Code Online (Sandbox Code Playgroud)

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

// 编辑 #1:GET 表达式 Name,Speed 必须包含在一组双引号中。Get 表达式之间不能有空格