我正在运行一个批处理文件,以从 Windows 10 设备中删除所有个人 WiFi 网络。我们之前遇到过一个问题,即 WiFi 配置文件是在 SYSTEM 帐户下创建的,并且不允许您删除该配置文件。这个问题已经得到解决,但需要删除用户计算机下保存的先前网络。
我有以下脚本要运行并且它按预期工作,但是:
@ECHO OFF
:: Checking for Admin (Right-click) Condition
CLS
NET SESSION > NUL
IF NOT %ERRORLEVEL% EQU 0 (
COLOR 4F
ECHO.
ECHO ----- WARNING! ERROR EXECUTING THE COMMAND -----
ECHO.
ECHO.
ECHO You must right-click and select "Run as Administrator" from the pop-up menu
ECHO.
ECHO.
GOTO END
) ELSE (
CLS
)
setlocal
:PROMPT
ECHO Using this will delete ALL PERSONAL wifi networks.
ECHO Users will have to type in their password for their specific SSID when in range.
SET /P QUESTION=Are you sure? (Y/[N])?
IF /I "%QUESTION%" NEQ "Y" GOTO END
netsh wlan delete profile name=*
ECHO Wifi networks deleted successfully
:END
echo.
echo.
PAUSE
我们有 2 个 GPO 分配的无线网络。它们通过我们的无线网络策略推送。正在寻找一种可能的 EXCLUDE 方法,以便我可以排除这两个网络的删除尝试,因为我正在为所有无线配置文件运行通配符(特殊情况下,用户可以访问这些配置文件)。可能出现这样的情况吗?
答案1
扩展music2myear 的回答,我会使用类似以下内容:
FOR /F "tokens=3* delims=: " %%a IN ('netsh wlan show profiles ^| FIND " : " ^| FINDSTR /v "My Wireless Network"') DO netsh wlan delete profile name="%%b"
您需要FINDSTR /v "My Wireless Network"
用任何适合您情况的find
东西来替换它findstr
。
分解
netsh wlan show profiles
- 列出计算机上可用的配置文件。FIND " : "
- 过滤所有内容,但包含配置文件 SSID 的行除外。FINDSTR /v "My Wireless Network"
- 从列表中删除例外情况。"tokens=3* delims=: "
- 将每行分成几部分并仅选择 SSID。^|
- 由于管道位于for
循环内部,因此需要对其进行转义。
进一步阅读
答案2
我能想到的两种方法:
添加逻辑来枚举计算机上当前配置的所有无线配置文件,确定您想要保留的两个,并删除其他配置文件。
在脚本末尾强制执行 gpupdate 以重新添加配置文件(注意:这可能需要活动域连接。)