Cara mendeteksi kecepatan (ethernet cepat atau gigabit) dari koneksi jaringan melalui baris perintah Windows


40

Untuk memecahkan masalah jaringan, saya ingin menanyakan "kecepatan" jaringan yang sebenarnya untuk adaptor jaringan yang diberikan, yang dapat dilihat saat membuka "status" koneksi jaringan di bawah Windows: Pengaturan kecepatan

Namun saya ingin menanyakan ini melalui baris perintah atau dengan alat kecil yang terpisah karena saya perlu meminta ini untuk beberapa koneksi jaringan dan tidak mempercayai pengguna untuk mengambil informasi dengan benar. Pengaturan "Speed ​​/ Duplux" kartu jaringan selalu "Auto Negotiate", jadi saya tidak dapat memastikan dari situ "Speed" apa yang akan saya dapatkan.

Jawaban:


61

Coba kueri WMI ini:

wmic NIC where NetEnabled=true get Name, Speed

Itu akan memberi Anda kecepatan semua koneksi jaringan yang aktif.

Sunting: seperti yang telah ditunjukkan, kueri ini harus dimodifikasi agar berfungsi di PowerShell (meskipun berfungsi dengan baik di cmd.exe). Kemudian lagi, di PowerShell Anda tidak perlu menggunakan WMI sama sekali:

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

Sebagai bonus, ini memberikan kecepatan dalam format yang bagus dan dapat dibaca manusia (mis. "1 Gbps"), daripada jumlah bit per detik.


1
dan jika Anda memiliki WIC NIC mana NetEnabled = true get Name, Speed ​​| sed -es / 000000000 / Gbit / | sed -es / 000000 \ b / Mbit /
Jamie Cook

2
Kueri WMI itu berfungsi di Windows 8 cmd, tetapi di Windows 7, saya harus menggunakan ini: wmic NIC di mana "NetEnabled = 'true'" get "Name, Speed" Tampaknya shell cmd mencoba menginterpretasikan ',' sebagai pemisah spasi atau perintah. PowerShell juga memiliki masalah ini. Terima kasih telah menempatkan saya di jalan yang benar!
The Dude

Apa yang saya butuhkan! Anda adalah orang yang hebat; n; +1 (PS apakah itu bit-per-detik?)
Cardinal System

1
@ CardinalSystem Ya, ini bit per detik.
Indrek

6

Dari jawaban Indrek:

wmic NIC mana NetEnabled = true get Name, Speed

akan bekerja di Command Prompt. Untuk penggunaan PowerShell:

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

( Klausa mana , dan atribut dapatkan apa pun (seperti Nama dan Kecepatan), harus dilampirkan dalam tanda kutip ganda dan dibatasi koma).

// Edit # 1: DAPATKAN ekspresi Nama, Kecepatan harus ditutup dalam satu set tanda kutip ganda. Dapatkan ekspresi mungkin tidak memiliki ruang di antara mereka


Itu aneh. Ini bekerja tanpa tanda kutip di sini.
DavidPostill

@ DavidPostill Memecah ekspresi GET di PS (setelah Anda menambahkan item kedua).
Louis

1
Ah. Dikonfirmasi Anda harus menambahkan jawaban Anda bahwa tanda kutip diperlukan untuk PowerShell dan tidak diperlukan dalam shell cmd.
DavidPostill

2

Saya ingin berkontribusi untuk bagian Anda. Jika Anda perlu menjalankan sed di Windows, Anda dapat mengunduh UnxUtils, lalu mengekstrak sed.exe ke c: \ Windows \ System32

Lalu ketika Anda pipa dengan sed seperti yang Anda sarankan, itu berfungsi. (Windows 8.1)

Terima kasih.

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

\btidak bekerja dengan seddi Cygwin. Yang berhasil bagi saya adalah [^0]. Atau, harus lengkap:s/000000[^0]/Mbit/
pepoluan

Kecuali itu akan menelan karakter non-nol pertama setelah 000000, yang mungkin bukan yang Anda inginkan.
Wodin

-1

Anda juga bisa menggunakan:

cat /sys/class/net/enp6s0/speed

Atau ketika eth0, untuk menentukan koneksi kecepatan Anda (100 atau 1000):

cat /sys/class/net/eth0/speed


jadi mengapa jawabannya diturunkan.?
Green Tree

1
Saya tidak tahu, sepertinya masih nol di sini: S. Ow mabye karena ini hanya Linux ..
Melroy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.