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
GPO が割り当てられたワイヤレス ネットワークが 2 つあります。これらはワイヤレス ネットワーク ポリシーを通じてプッシュされます。すべてのワイヤレス プロファイルに対してワイルドカードを実行しているため (ユーザーがこれらを削除する権限を持つ特殊なケース)、これら 2 つを削除の試行から除外できる、可能な 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
考えられる方法は2つあります。
コンピューター上で現在構成されているすべてのワイヤレス プロファイルを列挙し、保持する 2 つを識別し、その他を削除するロジックを追加します。
スクリプトの最後に gpupdate を強制してプロファイルを再度追加します (注: アクティブなドメイン接続が必要になる場合があります)。