Windows 10连接未知WiFi时自动断开:脚本检测公网IP并执行netsh wlan disconnect,通过组策略限制未知网络连接、事件日志(ID 10000/10001)触发PowerShell任务,确保零人工干预。

当Windows 10电脑意外连接到公共区域的未知WiFi热点(如酒店、机场、咖啡馆SSID未预存网络)时,需立即切断连接并防止后续自动重连,避免敏感数据泄露或中间人攻击。该需求不依赖人工干预,必须由系统在连接建立的瞬间触发响应。
确认未知网络的判定边界
Windows将“未知网络”定义为:从未手动连接过、未被保存至配置文件、且未在“管理已知网络”列表中出现的SSID。系统不会对这类网络启用“在范围之内时自动连接”,但一旦用户点击连接,它会临时建立会话并缓存凭据——这正是脚本需要拦截的窗口期。
注意:若该热点曾被连接过并勾选“自动连接”,则属于已知网络,本方案不适用。
创建断开连接的PowerShell脚本
第一步:用记事本新建文件,保存为C:\Scripts\BreakUnknownWifi.ps1(路径可自定,但需确保无中文和空格)。
第二步:粘贴以下内容并保存:
if ((Get-NetAdapter | Where-Object {$_.Status -eq "Connected" -and $_.Name -like "*Wi-Fi*"}) -and (Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.IPAddress -notmatch "^192\.168\." -and $_.IPAddress -notmatch "^10\." -and $_.IPAddress -notmatch "^172\.(1[6-9]|2[0-9]|3[0-1])\."})) { netsh wlan disconnect ; exit } else { exit }
该脚本逻辑是:仅当检测到Wi-Fi适配器处于连接状态,且分配到的是公网IPv4地址(非192.168.x、10.x、172.16–31.x私有网段)时,才执行断开命令。这能避开家庭/办公内网误判,精准打击外网热点。
设置脚本执行权限与触发机制
方法一:通过组策略启用脚本自动运行(推荐,适用于专业版/企业版)
① 按Win+R输入gpedit.msc回车,打开本地组策略编辑器。
② 导航至:计算机配置 → 管理模板 → 网络 → 网络连接 → Windows 连接管理器。
③ 双击右侧“配置自动连接的无线网络”,设为【已启用】→ 在下方“配置自动连接行为”中选择“仅连接已知网络”,并勾选“阻止连接到未知网络”。【此设置本身不执行脚本,但能将未知网络连接事件强制转为“失败连接”事件,为下一步日志触发铺路】
④ 继续导航至:计算机配置 → Windows 设置 → 安全设置 → 高级审核策略配置 → 系统审计策略 → 对象访问 → “审核其他对象访问事件”,设为【成功】和【失败】均启用。
绑定脚本到Windows事件日志触发
第一步:打开“事件查看器”→ 展开“Windows 日志”→ 点击“系统”,在右侧“筛选当前日志”。
第二步:在“事件ID”框中填入:10000,10001(这两个ID分别代表WLAN连接成功与连接失败事件,覆盖所有未知网络接入场景)。
第三步:点击“确定”后,在筛选结果中右键任一匹配事件→“将此事件作为任务附加”,选择“创建基本任务”。
第四步:任务名称填“BreakUnknownWifi”,触发器选“当事件被记录时”,操作选“启动程序”,程序路径填:powershell.exe,参数填:-ExecutionPolicy Bypass -File "C:\Scripts\BreakUnknownWifi.ps1"。
第五步:在任务属性→“常规”选项卡中,勾选“使用最高权限运行”和“不管用户是否登录都要运行”,并将“配置为”设为Windows 10。


















