2010-06-09 20 views

Trả lời

8

Một lệnh cơ bản là

Get-WmiObject -ComputerName 'servername' -Class Win32_NetworkAdapter | ` 
    Where-Object { $_.Speed -ne $null -and $_.MACAddress -ne $null } | ` 
    Format-Table -Property SystemName,Name,NetConnectionID,Speed 

Lưu ý rằng tham số ComputerName mất một mảng, do đó bạn có thể chạy này chống lại nhiều máy tính miễn là bạn có quyền. Thay thế danh sách thuộc tính Định dạng bảng bằng ***** để có danh sách toàn diện hơn về các thuộc tính có sẵn. Bạn có thể muốn lọc các thuộc tính này để loại bỏ các mục mà bạn không quan tâm.

Sử dụng byte dựng sẵn Hậu tố đa nhân (MB, GB, v.v.) cũng giúp tốc độ dễ đọc hơn tùy theo nhu cầu của bạn. Bạn có thể chỉ định điều này dưới dạng mục nhập HashTable trên mảng Định dạng-Bảng -Khả năng, ví dụ:

Format-Table -Property NetConnectionID,@{Label='Speed(GB)'; Expression = {$_.Speed/1GB}} 
+0

Một câu trả lời tốt đẹp! Tôi sẽ xóa các phần '-ne $ null'. –

+0

Thực ra có khá nhiều mục được trả về cho lớp Win32_NetworkAdapter, hãy kiểm tra nó. Tôi đang sử dụng -ne $ null để lọc ra các mục để tôi có thể xem các mục nhập thực tế cho các thẻ vật lý thực nhưng bạn có thể thích ứng khi bạn thấy phù hợp. –

+0

[System.Net.NetworkInformation.NetworkInterface] :: GetAllNetworkInterfaces() chỉ hoạt động với máy cục bộ. –

0

phiên bản hiện tại của tôi, lấy ra bluetooth và không dây thẻ (chạy với PowerShell -file script.ps1):

# return network speed as exit code 

$speed = Get-WmiObject -Class Win32_NetworkAdapter | 
where { $_.speed -and $_.macaddress -and 
$_.name -notmatch 'wireless|wi-fi|bluetooth|802\.11' } | select -expand speed 
exit $speed/1000000 
Các vấn đề liên quan