LoginSignup
16
20

More than 3 years have passed since last update.

Windowsのネットワーク切り替えバッチを作ってみた

Last updated at Posted at 2019-10-01

複数のマシンを管理していると、クライアントのIPアドレスやDNSサーバのアドレスをDHCPで配布すると思うが、必ずしもすべての事業所で対応できていないケースがある。
設置場所固定が前提のデスクトップPCであれば支障ないが、ノートPCを複数の拠点で使いまわす場合、接続するLANが変わるたびに設定(下図画面)を変えるのは些か煩雑であった。
image.png
そこで、IPv4のネットワーク設定を切り替えるバッチを作成した。

switch_network.bat
@echo off
echo 1:東京本社
echo 2:名古屋ビジネスセンター
echo 3:大阪事業所
echo.
choice /C:123 /M:どのネットワークに接続しますか
echo.

set NAME=イーサネット

if %ERRORLEVEL% equ 1 (
  netsh interface ipv4 set address "%NAME%" dhcp
  netsh interface ipv4 set dns "%NAME%" dhcp
  echo 東京本社に切り替えました!
) else if %ERRORLEVEL% equ 2 (
  netsh interface ipv4 set address "%NAME%" static <IPアドレス> <サブネットマスク> <デフォルトGW>
  netsh interface ipv4 set dns "%NAME%" static <優先DNS> primary
  netsh interface ipv4 add dns "%NAME%" <代替DNS>
  echo 名古屋ビジネスセンターに切り替えました!
) else if %ERRORLEVEL% equ 3 (
  netsh interface ipv4 set address "%NAME%" static <IPアドレス> <サブネットマスク> <デフォルトGW>
  netsh interface ipv4 set dns "%NAME%" static <優先DNS> primary
  netsh interface ipv4 add dns "%NAME%" <代替DNS>
  echo 大阪事業所に切り替えました!
)

ipconfig /all
pause

この例では「東京本社のみDHCP」「他拠点は固定IP」としている。
image.png
管理者権限を必要とするので、一般ユーザで運用するならrunasで昇格するラッパーバッチも用意しよう。

wrapper.bat
cd %~d0%~p0
runas.exe /noprofile /savecred /user:<ドメイン名>\<管理者アカウント名> "switch_network.bat"
pause

初回だけ管理者にパスワードを入力してもらえば良い。パスワードは資格情報に保存されるので2回目以降は聞いてこない。
ただし、runasの仕掛けはセキュリティホールになり得るので、バッチファイルのパーミッションを適切に設定し、書き替えられないような「ひと手間」は加えるべきだろう。

16
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
20