当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 检查 Windows 上的 Wi-Fi 信号强度

作者:精品下载站 日期:2024-12-14 23:25:01 浏览:13 分类:玩电脑

使用 PowerShell 检查 Windows 上的 Wi-Fi 信号强度


Wi-Fi 信号强度会影响互联网连接的质量。在 Windows 上,您可以通过多种方式检查当前 Wi-Fi 信号强度。我尝试学习如何使用 PowerShell 检查当前的 Wi-Fi 强度,在信号质量下降时显示通知,以及显示所有可用无线网络及其参数的列表。

Windows 10 用户可以使用任务栏中的无线网络图标来评估当前连接的 Wi-Fi 强度。单击该图标,您将看到可用 Wi-Fi 网络的列表。

[玩转系统] 使用 PowerShell 检查 Windows 上的 Wi-Fi 信号强度

每个 Wi-Fi 网络都有一个带条的图标。条数越多,无线接入点的信号强度就越好。三格表示信号质量在 75% 到 100% 之间。如果连接图标有两个横条,则 Wi-Fi 信号强度在 50% 到 75% 之间等。

您可以通过命令提示符获得更准确的信号强度值。使用以下命令列出当前无线连接的所有参数:

netsh wlan show interfaces

[玩转系统] 使用 PowerShell 检查 Windows 上的 Wi-Fi 信号强度

Wi-Fi 信号强度在屏幕截图中突出显示(

Signal: 72%

)。

使用 PowerShell,您只能获取百分比形式的信号强度值:

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

[玩转系统] 使用 PowerShell 检查 Windows 上的 Wi-Fi 信号强度

使用简单的 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 = “The Wi-Fi signal strength is less than $cur_strength Go back to the access point!”
$balmsg.BalloonTipTitle = "Attention $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 检查 Windows 上的 Wi-Fi 信号强度

我的屏幕截图显示通道 11 在我的环境中被大量使用,因此值得在另一个通道上运行我的接入点。

您可以使用该脚本来确保您的适配器是否可以看到 5GHz Wi-Fi 网络。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯