我正在運行一個批次檔來從 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
擴展至音樂2年的回答,我會使用類似以下內容的東西:
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 來重新新增設定檔(注意:這可能需要活動網域連線。)