PowerShell: проверяем уровень сигнала Wi-Fi для всех доступных сетей в Windows

Уровень сигнала Wi-Fi влияет на качество вашего интернет подключения. В Windows вы можете определить текущее значение уровня сигнала Wi-Fi подключения несколькими способами. Я попробовал разобраться, как с помощью PowerShell определить текущий уровень сигнала Wi-Fi; вывести уведомление, если качество сигнала упало; и вывести список всех доступных беспроводных сетей с их техническими параметрами.

Обычный пользователь Windows 10 может оценить уровень сигнала Wi-Fi для текущего подключения по иконке беспроводной сети в таскбаре. Щелкните по иконке и перед вами появится список доступных Wi-Fi сетей.

состояние wifi подключения и уровень сигнала в windows

У каждой Wi-Fi сети есть иконка с полосками. Чем больше полосок, тем лучше уровень сигнала точки доступа. Три полоски говорят о том, что уровень качества сигнала находится в диапазоне от 75 до 100%. Если у подключения две полоски, значит качество приема сигнала Wi-Fi между 50 и 75%, и т.д.

Вы можете получить более точное значение качества сигнала из командой строки. Все параметры текущего беспроводного подключения можно вывести с помощью команды:

netsh wlan show interfaces

netsh wlan show interfaces - информация о wifi подключении

На скриншоте выделен уровень сигнала подключения к Wi-Fi точке доступа (Signal: 72%).

С помощью PowerShell можно получить только значение уровня сигнала в процентах:

(netsh wlan show interfaces) -Match '^\s+Signal' -Replace '^\s+Signal\s+:\s+',''

powershell получить текущий уровнень сигнала wifi

С помощью простого PowerShell скрипта можно вывести всплывающее уведомление пользователю, если уровень Wi-Fi сигнала стал менее 30%.

$cur_strength=(netsh wlan show interfaces) -Match '^\s+Signal' -Replace '^\s+Signal\s+:\s+','' | Out-String
If ($cur_strength.replace('%','') –le 30)
{

Add-Type -AssemblyName System.Windows.Forms
$global:balmsg = New-Object System.Windows.Forms.NotifyIcon
$path = (Get-Process -id $pid).Path
$balmsg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
$balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning
$balmsg.BalloonTipText = “Уровень Wi-Fi сигнала менее $cur_strength Вернитесь к точке доступа!”
$balmsg.BalloonTipTitle = "Внимание $Env:USERNAME"
$balmsg.Visible = $true
$balmsg.ShowBalloonTip(10000)
}

PowerShell: вывести уведомление Windows, если качество wi-fi сигнала упало

Такой PowerShell цикл можно запустить в бесконечном цикле и проверять состояние сигнала раз в 10 секунд, или сделать из него службу Windows, чтобы она уведомляла вас об плохом Wi-Fi подключении.

Также с помощью netsh вы можете вывести список всех доступных беспроводных сетей в зоне действия вашего беспроводного адаптера (а не только список сохраненных wi-fi сетей). Для этого используется команда:

netsh wlan show network mode=bssid

Следующий PowerShell скрипт сканирует все доступные Wi-Fi сети (в том числе точки доступа на Windows), выводит их имена, уровень сигнала, каналы (полезно для поиска свободных каналов), и стандарты (802.11n, 802.11ac, 802.11g и т.д.), на которых они работают.

$logs=@()
$date=Get-Date
$cmd=netsh wlan show networks mode=bssid
$n=$cmd.Count

For($i=0;$i -lt $n;$i++)
{
If($cmd[$i] -Match '^SSID[^:]+:.(.*)$')
{
$ssid=$Matches[1]
$i++
$bool=$cmd[$i] -Match 'Type[^:]+:.(.+)$'
$Type=$Matches[1]
$i++
$bool=$cmd[$i] -Match 'Authentication[^:]+:.(.+)$'
$authent=$Matches[1]
$i++
$bool=$cmd[$i] -Match 'Cipher[^:]+:.(.+)$'
$chiffrement=$Matches[1]
$i++
While($cmd[$i] -Match 'BSSID[^:]+:.(.+)$')
{
$bssid=$Matches[1]
$i++
$bool=$cmd[$i] -Match 'Signal[^:]+:.(.+)$'
$signal=$Matches[1]
$i++
$bool=$cmd[$i] -Match 'Type[^:]+:.(.+)$'
$radio=$Matches[1]
$i++
$bool=$cmd[$i] -Match 'Channel[^:]+:.(.+)$'
$Channel=$Matches[1]
$i=$i+2
$logs+=[PSCustomObject]@{date=$date;ssid=$ssid;Authentication=$authent;Cipher=$chiffrement;bssid=$bssid;signal=$signal;radio=$radio;Channel=$Channel}
}
}
}
$cmd=$null
$logs|Out-GridView -Title 'Scan Wifi Script'

Перед вами должна появится вот такая таблица Out-GridView с информацией о параметрах всех доступных беспроводных сетях.

powershell скрипт для сканирования доступных wifi сетей, определения уровня сигнала и каналов

На это скриншоте видно, что в моем окружении популярен 13 канал, поэтому мне не стоит запускать свою точку доступа на этом канале.

Скрипт можно использовать для определения того, видит ли ваш адаптер 5 ГГц wi-fi сети.

Предыдущая статья Следующая статья


Комментариев: 2 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)