dragon image みちのぶのねぐら

Windows で netsh を簡単に使う

Update: 2009-05-19

Windows のコマンドラインツール netsh を使うと、ネットワークの設定の変更などが自動化できます。かなり複雑な設定でもできます。便利なのですが、高機能な分、コマンドやパラメータなどの種類が多くてとっつきにくいです。IPアドレスを変えるだけといった簡単な操作を、簡単に実現する手順を説明します。

現状の設定を内容を表示する

netsh でネットワークカードの設定を表示・変更するコンテキストは interface ip です。そのコンテキストで dump コマンドを実行すると、私の PC の場合次のように表示されます。

C:\> netsh -c "interface ip"
netsh interface ip\>dump

# ----------------------------------
# インターフェイス IP 構成
# ----------------------------------
pushd interface ip

# "ローカル エリア接続" のインターフェイス IP 構成

set address name="ローカル エリア接続" source=dhcp
set dns name="ローカル エリア接続" source=dhcp register=PRIMARY
set wins name="ローカル エリア接続" source=dhcp

popd
# インターフェイス IP 構成の最後

元の設定に戻すスクリプトを作成する

上の出力例の先頭が set の行が設定内容です。この例の場合、すべて DHCP で設定していることがわかります。この先頭 set の行は netsh のコマンドの形式です。つまり、これらの行を保存しておいて、この PC の設定を変えた後、 interface ip コンテキストでそのまま実行すれば、元の設定に戻すことができます。

【注意】 上の例の “ローカル エリア接続” の部分は PC によって異なります。

そのためには、まず、次の内容のファイル DHCPを使う.txt を作成します。

set address name="ローカル エリア接続" source=dhcp
set dns name="ローカル エリア接続" source=dhcp register=PRIMARY
set wins name="ローカル エリア接続" source=dhcp

このファイルを使って次のオプションを指定して netsh を実行すれば、DHCP を使う設定に変更できます。

netsh -c "interface ip" -f DHCPを使う.txt

いろいろな設定に変更するためのバッチを作成する

DHCP を使わない静的な IP アドレスを設定して dump コマンドを実行すると、私の PC の場合次のように表示されます。

C:\>netsh interface ip>dump

# ----------------------------------
# インターフェイス IP 構成
# ----------------------------------
pushd interface ip

# "ローカル エリア接続" のインターフェイス IP 構成

set address name="ローカル エリア接続" source=static addr=192.168.1.101 mask=255.255.255.0
set address name="ローカル エリア接続" gateway=192.168.1.1 gwmetric=0
set dns name="ローカル エリア接続" source=static addr=none register=PRIMARY
set wins name="ローカル エリア接続" source=static addr=none

popd
# インターフェイス IP 構成の最後

DHCP の例と同じように、次の内容のファイル 静的アドレスを使う.txt を作成します。

set address name="ローカル エリア接続" source=static addr=192.168.1.101 mask=255.255.255.0
set address name="ローカル エリア接続" gateway=192.168.1.1 gwmetric=0
set dns name="ローカル エリア接続" source=static addr=none register=PRIMARY
set wins name="ローカル エリア接続" source=static addr=none

DHCP 設定用、静的アドレス用、それぞれのバッチファイルを作成します。

DHCPを使う.bat

netsh -c "interface ip" -f DHCPを使う.txt
ipconfig /ALL

静的アドレスを使う.bat

netsh -c "interface ip" -f 静的アドレスを使う.txt
ipconfig /ALL