Cách phát hiện tốc độ (nhanh hoặc gigabit ethernet) của kết nối mạng qua dòng lệnh Windows


40

Để khắc phục sự cố mạng, tôi muốn hỏi "tốc độ" mạng thực sự của một bộ điều hợp mạng nhất định, có thể thấy khi mở "trạng thái" của kết nối mạng trong Windows: Cài đặt tốc độ

Tuy nhiên, tôi muốn hỏi điều này qua dòng lệnh hoặc bằng một công cụ nhỏ, riêng biệt vì tôi cần yêu cầu điều này cho nhiều kết nối mạng và không tin tưởng người dùng tìm nạp thông tin đúng cách. Cài đặt "Tốc độ / Duplux" của card mạng luôn là "Tự động đàm phán", vì vậy tôi không thể biết được "Tốc độ" nào tôi sẽ nhận được.

Câu trả lời:


61

Hãy thử truy vấn WMI này:

wmic NIC where NetEnabled=true get Name, Speed

Điều đó sẽ cung cấp cho bạn tốc độ của tất cả các kết nối mạng đang hoạt động.

Chỉnh sửa: như đã được chỉ ra, truy vấn này phải được sửa đổi để hoạt động trong PowerShell (mặc dù nó hoạt động tốt trong cmd.exe). Sau đó, một lần nữa, trong PowerShell, bạn hoàn toàn không cần sử dụng WMI:

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

Như một phần thưởng, điều này mang lại tốc độ ở định dạng đẹp, dễ đọc cho con người (ví dụ: "1 Gbps"), thay vì số bit mỗi giây.


1
và nếu bạn có sed sed wmic trong đó NetEnables = true get Name, Speed ​​| sed -es / 000000000 / Gbit / | sed -es / 000000 \ b / Mbit /
Jamie Cook

2
Truy vấn WMI đó đã hoạt động trong Windows 8 cmd, nhưng trong Windows 7, tôi đã phải sử dụng điều này: wmic NIC trong đó "NetEnables = 'true'" get "Name, Speed" Có vẻ như trình bao cmd đang cố gắng diễn giải ',' như một dấu cách hoặc dấu cách. PowerShell cũng có vấn đề này. Cảm ơn đã đưa tôi đi đúng hướng!
Các Dude

Đúng thứ tôi cần! Bạn là một người tuyệt vời; n; +1 (PS là bit trên mỗi giây?)
Hệ thống Hồng y

1
@CardinalSystem Có, đó là bit mỗi giây.
Indrek

6

Từ câu trả lời của Indrek:

wmic NIC nơi NetEnables = true get Name, Speed

sẽ làm việc trong Dấu nhắc lệnh. Để sử dụng PowerShell:

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

( Mệnh đề where và bất kỳ thuộc tính get nào (như Tên và Tốc độ), phải được đặt trong dấu ngoặc kép và được phân cách bằng dấu phẩy).

// Chỉnh sửa # 1: Tên biểu thức GET, Tốc độ phải được đặt trong một bộ dấu ngoặc kép. Nhận biểu thức có thể không có khoảng cách giữa chúng


Điều đó thật lạ. Nó hoạt động mà không có dấu ngoặc kép ở đây.
DavidPostill

@DavidPostill Nó phá vỡ biểu thức GET trong PS (khi bạn thêm mục thứ hai).
Louis

1
À. Khẳng định. Bạn nên thêm vào câu trả lời của mình rằng các trích dẫn được yêu cầu cho PowerShell và không cần thiết trong vỏ cmd.
DavidPostill

2

Tôi muốn đóng góp cho chia sẻ của bạn. Nếu bạn cần chạy sed trong Windows, bạn có thể tải xuống UnxUtils, sau đó giải nén sed.exe vào c: \ Windows \ System32

Sau đó, khi bạn ống với sed như bạn đề nghị, nó hoạt động. (Windows 8.1)

Cảm ơn.

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

\bkhông làm việc với sedCygwin. Những gì làm việc cho tôi là [^0]. Hoặc, để được hoàn thành:s/000000[^0]/Mbit/
pepoluan

Ngoại trừ việc sẽ nuốt ký tự khác không đầu tiên sau 000000, có thể không phải là điều bạn muốn.
Wodin

-1

Bạn cũng có thể dùng:

cat /sys/class/net/enp6s0/speed

Hoặc khi đó là eth0, để xác định kết nối tốc độ của bạn (100 hoặc 1000):

cat /sys/class/net/eth0/speed


vậy tại sao câu trả lời bị bỏ qua.?
Cây xanh

1
Tôi không biết, dường như vẫn bằng không ở đây: S. Ow mabye vì đây chỉ là Linux ..
Melroy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.