treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

無線LANのSSID(プロファイル)を書き出すバッチ

最近のWindows Updateによってネットワーク関連で不具合が出ることが多くありますが、その中でも無線LANのSSID設定が消えるというのも引き続き発生するようです。
今日はバッチで使っているSSIDを.xmlファイルに収集するためのバッチファイルをご報告です。

そういや今日13日がWindows Update2018年6月分の配信日ですね。今月は大丈夫かしら、戦々恐々としております。

SSIDが消える

Windows UpdateでSSIDが消えます。3月のセキュリティアップデートから発生しており、SSID自体を手動で(あるいは他の方法で)再設定することで復旧します。
でもSSIDのセキュリティキーが長いとか、そもそも誰かに設定してもらっているから知らないとか、そういう事情があると、復旧できないってことになります。

確実にSSIDを追加するとき

いま使っている無線LANプロファイル(SSIDとパスのセット)をそのまま抜き出して、別のPCに取り込んであげれば、一番簡単だし確実、というわけです。
しかも、何か不具合があるのであれば、正常動作するPCからSSID設定を抜き出して.xmlファイルを別PCにインポートしてやれば、問題の切り分けになることもあります。

現在利用中のSSIDを抜き出すってことは「確実に稼働していた環境から設定を抜き出す」という意味で「確実に動作する設定を入れる」ということになるので、問題の切り分けの一環としては有効だといえます。

抜き出すバッチファイル

以下をバッチファイルにして、実行するとSSID設定を.XMLファイル化して保存することができます。

-------バッチファイル-------
@echo off
:startssidexport
set WLProF=
set CopyF=
set Rtry=
rem 初期値セット
set CopyF="%USERPROFILE%\DESKTOP"

echo 現在の無線LAN設定を.xmlファイルに書き出します。
echo 書き出す無線LANプロファイル名を別途調べてください。
set /p WLProF="プロファイル名を入力 >"
echo .
echo 書き出す.xmlファイルの保管場所はデスクトップ(%CopyF%)です。
echo このままでいいですか?
echo ※ファイルの保管場所はPCのローカルフォルダである必要があります。
set /p Rtry="デフォルトを使う場合は[Y]を、変更する場合は[N]を入力しEnterキーを押下 >"
if /i %Rtry% == y (goto startexec)
if /i %Rtry% == n (goto startPath)

:startPath
echo .
echo 書き出す.xmlファイルの保管場所を入力してください。
set /p CopyF="アクセス可能な場所をフルパスで入力して下さい。>"

:startexec
echo .
echo ..
echo ...
echo この無線プロファイル(%WLProF%)を"%CopyF%"に書き出します。
echo よろしいですか? ※キャンセル時にはなにも実行せず終了します。
set /p Rtry="実行は[Y]をキャンセルは[N]を入力しEnterキーを押下します。 >"
if /i %Rtry% == y (goto cmdexec)
if /i %Rtry% == n (goto end)

:cmdexec
rem netsh wlan export profile name="プロファイル名" folder="保存場所フルパス"
netsh wlan export profile name="%WLProF%" folder="%CopyF%"

:end
set WLProF=
set CopyF=
set Rtry=
-------------------------------------------------------
バッチファイルここまで
-------------------------------------------------------

復旧方法

あとは、SSIDを設定したい(設定を入れ込みたい)PC上で

netsh wlan add profile filename="生成した.xmlファイル名" user=all

と実行するとSSIDが復旧します。

.xmlファイル内に
<nonBroadcast>true</nonBroadcast>
とか
<sharedKey>なんかいろいろ</sharedKey>
とか書かれているからそのままでも使えるはず、ですけども。

上手くいかない場合の備忘録がてら以下を記載しておきます。
-------------------------------------------------------
netshで別途プレシェアードキーを追加するときは

netsh wlan add profile filename="生成した.xmlファイル名" user=all
netsh wlan set profileparameter name=%SSID名% keymaterial=%復旧するSSIDのPSK%

として別途プレシェアードキーを追加することができます。

またステルス(ANY拒否)のSSIDの場合には

netsh wlan add profile filename="生成した.xmlファイル名" user=all
netsh wlan set profileparameter name=%SSID名% nonBroadcast=yes keymaterial=%復旧するSSIDのPSK%

という具合に「nonBroadcast=yes」を入れることで、個別に設定することができます。

なんかこの辺もバッチファイルでうまいことできるといいなぁと思いました。

ちょっと今後の課題です。