批处理文件删除无线配置文件但排除 2 个 GPO 分配的 wifi 配置文件

批处理文件删除无线配置文件但排除 2 个 GPO 分配的 wifi 配置文件

我正在运行一个批处理文件,以从 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 以重新添加配置文件(注意:这可能需要活动域连接。)

相关内容