サラリーマン雑学@えつみん

サラリーマンに役立つ「お金とIT」の雑学です

パソコンのIPアドレスやDNSなど、ネットワーク設定変更を自動で行うには

こんにちは、えつみんです。

今回は、会社の社内SEとしての苦労話です。

私の会社には約150台のパソコンがあります。本社に加え、全国に3拠点ある営業所を含めての台数です。

先日、パソコンのネットワーク設定変更が必要になりました。しかし150台のパソコン1台1台変更するのは、かなり手間と時間がかかります。そこで、なんとか自動化できないか考えました。

 

サーバとなるパソコンのIPアドレスの設定をする -Windows(R) XP の場合-



<背景>

昨年末に、ドメインコントローラのセカンダリ機をリニューアルしました。ドメインコントローラとは、社内ネットワークに繋がるサーバやパソコンの、ユーザ名、IPアドレス、パスワードなどを管理するサーバです。

その際IPアドレスが変わったので、全てのサーバとパソコンの「代替DNSサーバ」のアドレスを変える必要が生じました。

プライマリ機の「優先DNSサーバ」アドレスは変更ありませんので、すぐに問題は起きませんが、セカンダリ機の「代替DNSサーバ」を正しくしておかないと、プライマリ機に障害があったときに、サーバへ接続できなくなります。

 

 

<対応策>

150台のパソコンを1台ずつ回って、ネットワーク設定の変更をするのは、さすがに時間がかかって面倒です。1台5分かかるとしてトータル12.5時間はかかる計算です。

そこで、各パソコンへバッチファイルを自動配布し、自動的にアドレスを変更する作戦を考えました。

自動配布・自動実行は「Skysea」というパソコン管理ソフトの、ソフトウェア配布機能を使い、数分で変更が完了しました。

 

<苦労したこと>

まずはネット情報を参考にバッチファイルを作って、試しに1台のパソコンで走らせてみました。ところが、そのバッチファイルを何回実行しても変更されません。

文法が間違っているかと思い、何回か修正を繰り返し試しましたが、どうもうまくいきません。原因を究明するのに、ほぼ1日かかりました。

 

原因1:インターフェース名が間違い

バッチファイルでインターフェース名を指定するパラメータがありますが、それが間違っていました。設定するパソコンによって、名前が違う場合があるので要注意!

誤:dns name="ローカルエリア接続"
正:dns name="イーサネット"  

正しいインターフェース名を確認する方法は、

 設定>ネットワークとインターネット>アダプターのオプションを変更する>

ここに出てくる名前を設定します。

 

原因2:バッチファイルの文字コードが間違い

メモ帳で作成して保存したとき、デフォルトの文字コードが「UTF-8」でした。これだと、インターフェース名の全角文字が文字化けしてしまうことが判明。そこで、保存するときに、文字コードを「ANSI」を指定することで解決しました、

 

原因3:管理者として実行していない

バッチファイルをそのまま実行してもだめで、管理者として実行することでうまくいきました。

バッチファイルの右ボタンを押して「管理者で実行」を選択する方法もありますが、次の方法でバッチファイルを実行すると自動的に管理者で実行できます。

 バッチファイルのショートカットを作る> ショートカットを右クリックでプロパティを開く> 詳細設定で「管理者として実行」にチェックを入れる >ショートカットを実行する

ただ、今回はSkyseaのソフトウェア配布機能の中に、「管理者として実行する」オプションがありましたので、それを使いました。

 

作成したバッチファイル例

1)DNS設定を変更するサンプル


ーーーーーーーーーーーーーーーーーーーー
@echo off
netsh interface ipv4 set dns name="イーサネット" source=static addr="*.*.*.*" register=non validate=no
netsh interface ipv4 add dns name="イーサネット" addr="*.*.*.*" index=2 validate=no
pause
exit
ーーーーーーーーーーーーーーーーーーーー

※上のnetsh(ネットシェル)コマンドが優先DNSサーバの設定、下のnetshが代替DNSサーバの設定です。

※ちなみに、自動実行してすぐにコマンドプロンプト画面を消したい時は、pauseを省きます。

 

2)IPアドレス、サブネットマスク、デフォルトゲートウェイを変更したい時のサンプル


ーーーーーーーーーーーーーーーーーーーー
@echo off
netsh interface ipv4 set add name="イーサネット" source=static addr="*.*.*.*" mask="255.255.255.0" gateway="*.*.*.*" gwmetric=1
pause
exit

ーーーーーーーーーーーーーーーーーーーー

 

まとめ

パソコンのネットワーク設定変更は、そんなに頻繁にあるわけではありませんが、大量のパソコンを一度に変更するときは大変です。今回は自前でバッチファイルを作り、Skyseaのソフトウェア配布機能を使うことで、とても効率化できました。このSkyseaは、パソコンの遠隔操作も出来るため、何かパソコンにトラブルがあったときに、すぐに接続して確認ができ、重宝しています。