powershell可通过组合netsh wlan命令、定时扫描、数据解析与分组计算,实现对各wifi ssid信号强度均值的统计;需定期执行扫描提取ssid及signal百分比,存入csv后按ssid分组求平均。
powershell 本身不直接提供跨 wifi 网络持续采集并分组统计信号强度的功能,但可通过组合 netsh wlan 命令、定时采样、数据解析与分组计算,实现对“当前连接过的各 wifi 名称(ssid)下信号强度均值”的统计。关键在于:记录历史连接 + 提取实时信号 + 按 ssid 归类 + 计算平均值。
一、获取当前已知 WiFi 列表及信号强度(需管理员权限)
Windows 不保存历史信号强度日志,所以需主动采集。先用以下命令列出所有已配置的无线网络,并尝试获取其最近一次连接时的信号质量(部分系统支持):
注意:netsh wlan show interfaces 只显示当前连接的信号;要覆盖多个 WiFi,需逐个连接/断开或依赖扫描结果。更可行的方式是定期执行扫描,提取可见网络的信号强度:
-
netsh wlan show networks mode=bssid输出所有可扫描到的 WiFi 及其信号强度(RSSI,单位 dBm) - 该命令无需连接,但需无线网卡开启且驱动支持扫描
- 输出为多段文本,需用 PowerShell 解析 SSID 和 Signal 行
二、编写脚本采集并结构化存储数据
下面是一个基础采集脚本示例(保存为 Get-WiFiSignalHistory.ps1):
$logPath = "$env:USERPROFILE\WiFiSignalLog.csv"
$scanResult = netsh wlan show networks mode=bssid 2>&1
if ($scanResult -match "No networks found") { Write-Warning "未扫描到 WiFi"; return }
<p>$entries = $scanResult -split "`n" | ForEach-Object {
if ($<em> -match "^SSID \d+ : (.+)") {
$ssid = $matches[1].Trim()
}
if ($</em> -match "^\s<em>Signal\s</em>:\s<em>(\d+)%") {
[PSCustomObject]@{
SSID = $ssid
SignalPercent = [int]$matches[1]
Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
RSSI = [Math]::Round(2 </em> $matches[1] - 100) # 粗略换算(常见近似:RSSI ≈ 2×% − 100)
}
}
}
$entries | Export-Csv -Path $logPath -Append -NoTypeInformation -Encoding UTF8
</p>
说明:
将提醒同步至 Windows/Outlook 日历。用户提及「提醒我」「设置提醒」「加到日历」「同步到日历」「日程」「calendar」「日历」时触发。支持Microsoft Graph API 设备代码流认证,无需 Web 服务器,直接写入用户 Outlook 日历。
- 每次运行会追加一行记录到 CSV,含 SSID、信号百分比、时间、估算 RSSI
- RSSI 换算为近似值(实际映射因驱动而异,百分比更稳定)
- 建议配合任务计划程序每 1–5 分钟运行一次,积累足够样本
三、统计各 WiFi 的信号强度均值
采集一段时间后(例如 1 小时),运行统计脚本:
$log = Import-Csv "$env:USERPROFILE\WiFiSignalLog.csv"
$log | Group-Object SSID | ForEach-Object {
[PSCustomObject]@{
SSID = $_.Name
AvgSignalPercent = [Math]::Round(($_.Group.SignalPercent | Measure-Object -Average).Average, 1)
SampleCount = $_.Count
MinSignal = ($_.Group.SignalPercent | Measure-Object -Minimum).Minimum
MaxSignal = ($_.Group.SignalPercent | Measure-Object -Maximum).Maximum
}
} | Sort-Object AvgSignalPercent -Descending | Format-Table -AutoSize
输出示例:
SSID AvgSignalPercent SampleCount MinSignal MaxSignal ---- ---------------- ----------- --------- --------- MyHomeWiFi 78.3 42 62 94 CoffeeShopNet 42.1 18 28 56 Office-Guest 55.7 31 39 71
四、增强实用性的小建议
- 过滤弱信号:采集时可跳过 Signal
- 区分 2.4G/5G 同名网络:若路由器广播相同 SSID,可在解析时加入 BSSID(MAC 地址)字段辅助识别
-
可视化趋势:用
Import-Csv+Out-GridView或导出至 Excel 查看时间序列变化 -
权限提醒:首次运行需以管理员身份启动 PowerShell,否则
netsh wlan可能无响应
不复杂但容易忽略的是:信号强度本身波动大,均值意义取决于采样密度和场景一致性。建议在目标 WiFi 覆盖区域内固定位置、持续采集 15 分钟以上再统计,结果才具备参考价值。










