バッチでクライアントの静的DNSを変更する(メモ)


静的DNSサーバーを設定しているクライアント用。
DNSサーバーの変更時、
このバッチをGPOのログオンスクリプトなどに登録して使用。

ネットワークアダプター名は下記を想定。
Windows7用に「ローカル エリア接続」「ワイヤレス ネットワーク接続」
Windows10用に「イーサネット」「Wi-Fi」

chgdns.bat
@echo off

setlocal

for /f "tokens=* usebackq" %%i in (`netsh interface ip show dns name^="ローカル エリア接続" ^| find "静的" ^| find "10.0.0.1"`) do (
 netsh dns add dnsserver name="ローカル エリア接続" address=10.1.1.1 validate=no
 netsh dns add dnsserver name="ローカル エリア接続" address=10.1.1.2 validate=no
 netsh dns delete dnsserver name="ローカル エリア接続" address=10.0.0.1 validate=no
 netsh dns delete dnsserver name="ローカル エリア接続" address=10.0.0.2 validate=no

)

for /f "tokens=* usebackq" %%i in (`netsh interface ip show dns name^="ワイヤレス ネットワーク接続" ^| find "静的" ^| find "10.0.0.1"`) do (
 netsh dns add dnsserver name="ワイヤレス ネットワーク接続" address=10.1.1.1 validate=no
 netsh dns add dnsserver name="ワイヤレス ネットワーク接続" address=10.1.1.2 validate=no
 netsh dns delete dnsserver name="ワイヤレス ネットワーク接続" address=10.0.0.1 validate=no
 netsh dns delete dnsserver name="ワイヤレス ネットワーク接続" address=10.0.0.2 validate=no

)

for /f "tokens=* usebackq" %%i in (`netsh interface ip show dns name^="イーサネット" ^| find "静的" ^| find "10.0.0.1"`) do (
 netsh dns add dnsserver name="イーサネット" address=10.1.1.1 validate=no
 netsh dns add dnsserver name="イーサネット" address=10.1.1.2 validate=no
 netsh dns delete dnsserver name="イーサネット" address=10.0.0.1 validate=no
 netsh dns delete dnsserver name="イーサネット" address=10.0.0.2 validate=no

)

for /f "tokens=* usebackq" %%i in (`netsh interface ip show dns name^="Wi-Fi" ^| find "静的" ^| find "10.0.0.1"`) do (
 netsh dns add dnsserver name="Wi-Fi" address=10.1.1.1 validate=no
 netsh dns add dnsserver name="Wi-Fi" address=10.1.1.2 validate=no
 netsh dns delete dnsserver name="Wi-Fi" address=10.0.0.1 validate=no
 netsh dns delete dnsserver name="Wi-Fi" address=10.0.0.2 validate=no

)