为了解决网络问题,我想查询给定网络适配器的实际网络“速度”,可以在 Windows 下打开网络连接的“状态”时看到:
但是我想通过命令行或使用一个单独的小工具来查询,因为我需要为多个网络连接请求此信息,并且不相信用户能够正确获取信息。网卡“速度/双工”设置始终为“自动协商”,因此我无法从中知道我将获得什么“速度”。
答案1
尝试这个 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”)给出了速度,而不是每秒的位数。
答案2
来自 Indrek 的回答:
wmic NIC 其中 NetEnabled=true 获取名称、速度
将在命令提示符中工作。对于 PowerShell 使用:
wmic NIC where "NetEnabled='true'" get "Name,Speed"
(这在哪里条款,以及任何得到属性(如 Name 和 Speed),必须用双引号括起来并用逗号分隔。
// 编辑 #1:GET 表达式 Name,Speed 必须用一组双引号括起来。Get 表达式之间不能有空格
答案3
我愿意为你的分享做出贡献。如果你需要在 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/
答案4
您还可以使用:
cat /sys/class/net/enp6s0/speed
或者当它是 eth0 时,确定你的连接速度(100 或 1000):
cat /sys/class/net/eth0/speed