為了解決網路問題,我想查詢給定網路適配器的真實網路“速度”,在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"
(這在哪裡條款,以及任何得到屬性(如名稱和速度),必須用雙引號括起來並以逗號分隔)。
// 編輯#1:GET 表達式名稱、速度必須括在一組雙引號內。 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