TechNote

情シスの覚え書き

Wi-Fi環境切り替えバッチ

社内にそれぞれ用途が違う複数の種類のWi-Fiがあり、大量のマシンにそれらを設定していく必要が生じたので、それ用のバッチの作成したときのメモ。

1.Wi-Fiプロファイルの準備
2.Wi-Fi接続のためのコマンド
3.その他
4.メニュー化
(追記)


1.Wi-Fiプロファイルの準備

まず、該当Wi-Fiに一度手動で繋げた状態で、Wi-Fiプロファイル(xmlファイル)をエクスポートしておく。コマンドは下記。cmdを管理者として実行しておく必要がある。

netsh wlan export profile name="internet-A" folder=c:\test\

nameはSSIDを指定。folderは出力先。この例だと「internet-A.xml」がcドライブ内のtestフォルダへ生成される。
これでxmlファイルを生成したら、バッチファイルと同じ場所に例えば「profile」というフォルダを作成して入れておく。

今回は下記のような構成を想定している。

フォルダ
|-切替.bat
|-profile
  |-Wi-Fi-internet-A.xml
  |-Wi-Fi-internet-B.xml

2.Wi-Fi接続のためのコマンド

コマンドは下記。

:connect-internet-A

set wifi_prof="%~dp0profile\internet-A.xml
set ssid=internet-A
set pw=xxxxxxxxx

netsh wlan add profile filename=%wifi_prof%
netsh wlan set profileparameter name=%ssid% nonBroadcast=yes keymaterial=%pw% connectionmode=auto
 
echo - Wi-Fi設定完了:%ssid%

netsh wlan connect name=%ssid%
echo - Wi-Fi接続完了:%ssid%

echo.
echo - 接続を5秒間待ちます
powershell sleep 5

pause
goto end

netsh wlan set profileparameter の補足

name:SSID
keymaterial:パスワード
nonBroadcast=yes:「ネットワークがブロードキャストを行っていない場合でも接続する」にチェック
connectionmode=auto:「自動的に接続する」にチェック

上記の connectionmode=auto によって「自動的に接続する」にチェックをつけただけでは接続されない場合があったので、
netsh wlan connect name=%ssid% を入れておく。

3.その他

connect-internet-B 、connect-syanai-Aについても、同様にWi-Fiプロファイルを用意し、profileフォルダへ放り込んだうえで似たような処理を書いていくが、

例えばconnect-syanai-A(プロキシ設定が必要な社内LAN)などの場合、proxy の設定を下記のような感じで入れておく。

rem プロキシサーバー設定
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d xxx.xxx.xxx.xxx /f
rem プロキシ有効化
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
rem プロキシ除外を設定
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyOverride /t reg_sz /d "xxx.xxx.xxx.*"
rem InternetExplorerの初期ページを設定
reg add "HKCU\Software\Microsoft\Internet Explorer\Main" /v "Start Page" /d "https://www.google.com" /f 

rem winhttp proxyのimport前に一度InternetExploreを起動
start https://www.google.com

pause 

rem winhttpの設定をInternetExploreからインポート
netsh winhttp import proxy source=ie

echo 設定完了
pause
goto end

4.メニュー化

最後にメニュー化する。

@echo off

:startmenu
echo ----------------メニュー----------------
echo [1] Wi-Fi"internet-A"に接続
echo [2] Wi-Fi"internet-B"に接続
echo [3] Wi-Fi"syanai-A"に接続
echo [4] この処理を終了する
echo -----------------------------------------
set /p NUM="処理番号を入力してください >"
if "%NUM%"=="1" goto connect-internet-A
if "%NUM%"=="2" goto connect-internet-B
if "%NUM%"=="3" goto connect-syanai-A
if "%NUM%"=="4" goto endMsg
goto NoNumber


:connect-internet-A
rem ここに接続処理を書く
pause
goto end


:connect-internet-B
rem ここに接続処理を書く
pause
goto end

:connect-syanai-A
rem ここに接続処理を書く
pause
goto end

:NoNumber
echo その番号はメニューにありません。
echo ...
pause
goto startmenu

:end

:endMsg
echo %0 の動作が完了しました。

これでだいたいの環境切り替えには対応できそう。

(追記)

切り替え時に前回接続したSSIDへの接続が残る(切断されない)という挙動があったので、冒頭に下記切断コマンドを入れることで解消した。

rem 現在の接続を切断
netsh wlan disconnect