作成 2012.02.29
更新 2012.03.01
BAT ファイルで DHCP の MAC アドレスをまとめて登録する
サンプルコード
Windows Server 2008 R2 で動作確認しました。
Windows Server 2003 の場合は、コマンドラインが異なるため、そのまま実行できないはずです。
netsh exec コマンドを使うことでも一括登録はできますが、どの行で失敗したかわからないのでこんな記述になりました。
実際に動作させる場合はサンプルコードのSVとSCOPEを任意に変更してください。
add-dhcp.bat
@ECHO OFF
SET FILE=%1
SET SV=\\dhcpsv.mydomain.lan
SET SCOPE=10.0.0.0

echo Load File: %FILE%
echo DHCP Server: %SV%
echo Scope: %SCOPE%

IF EXIST %FILE% (GOTO SH_DO) ELSE GOTO SH_NOT_FOUND
:SH_DO
FOR /F "usebackq tokens=1,2* delims=," %%i IN (%FILE%) DO (
echo IP=%%i MAC=%%j HOST=%%k
netsh Dhcp Server %SV% Scope %SCOPE% Add reservedip %%i %%j %%k "" "BOTH"
)
GOTO SH_END

:SH_NOT_FOUND
echo %FILE% Not Found.
GOTO SH_END

:SH_END
サンプルデータ test.csv
10.0.0.100,00112233ee01,client1.mydomain.lan
10.0.0.101,00112233ee02,client2.mydomain.lan
実行結果
C:\>add-dhcp.bat test.csv
Load File: test.csv
DHCP Server: \\dhcpsv.mydomain.lan
Scope: 10.0.0.0
IP=10.0.0.100 MAC=00112233ee01 HOST=client1.mydomain.lan

現在のスコープ コンテキストを 10.0.0.0 スコープに変更しました。

コマンドを正しく完了しました。
IP=10.0.0.101 MAC=00112233ee02 HOST=client2.mydomain.lan

現在のスコープ コンテキストを 10.0.0.0 スコープに変更しました。

コマンドを正しく完了しました。

補足
Scope の調べ方
サンプルコードの SCOPE にはスコープアドレスを指定します。
C:\>netsh dhcp server show scope

=================================================================================
 スコープアドレス - サブネット マスク - 状態    - スコープ名          -  コメント
=================================================================================

 10.0.0.0       - 255.255.255.0  -アクティブ    -10                   -


 スコープの合計 = 1
コマンドを正しく完了しました。
タグ: BAT Windows

©2004-2017 UPKEN IPv4