【Windows】ネットワーク設定を一発で行うバッチファイルを作りました。

社内ネットワークが中規模になると、MACアドレスでDHCPで固定IPアドレスを配布するのが一般的かと思いますが、ネットワーク周りを外部に委託していてかつ、自社の責任範囲ではMACアドレスでDHCPで固定IPアドレスを配布することができない時に、このバッチファイルが役に立つと思います。

バッチファイル条件

  • ネットワーク・インターフェースに割り当てられているIdx番号かインターフェースの名前を入力するとそのネットワーク・インターフェースを設定します。
  • 管理者権限無しで起動すると強制的に管理者権限に昇格するようにしています。
  • 例では第3オクテットで拠点のIPアドレスが異なる場合を想定して作成しています。
    • たぶんどの条件でも動きます。
  • バッチファイルを保存する際は必ずANSIShift JISで保存してください。
    • それで保存しないと文字化けしてしまい正常に動作しない可能性があります。
  • バッチファイル内でパラメーターを使用しています。
    • 任意で変えていただくと簡単にどの環境でも固定IPを設定することができます。

IPアドレスを固定にするバッチファイル

動作イメージ

バッチファイル内容

@echo off

rem 管理者権限強制昇格
cd /d %~dp0
openfiles > nul

if "%1"=="" (
set arg=
) else (
set arg= -ArgumentList "%1"
)
if errorlevel 1 (
   PowerShell.exe -Command Start-Process \"%~f0\"%arg% -Verb runas
   exit
)

echo ネットワーク設定を実行します。
echo;
rem インターフェース名表示
echo ネットワーク・インターフェース一覧
netsh int ip show int

rem インターフェース指定
set Interface=
set /p Interface=設定するインターフェース名を指定してください。(Idx or name):
setlocal enabledelayedexpansion
echo;

rem 拠点指定
set base=
set /p base=拠点は?(拠点A=1 拠点B=2 拠点C=3 拠点D=4 拠点E=5):
echo;
rem 拠点指定セカンダリーDNS変数格納
rem 一部拠点でDNSサーバが異なる時に使ってください。
if "%base%"=="1" (
    set dns_sec=192.168.1.2
) else (
    set dns_sec=192.168.%base%.252
)

rem PC端末のIPアドレス指定
set IP_addr=
set /p IP_addr=IPアドレスを指定してください。:

rem 実行前最終確認画面
echo;
echo 設定インターフェース:%Interface%
echo IPアドレス:%IP_addr%
echo サブネットマスク:255.255.255.0
echo デフォルトゲートウェイ:192.168.%base%.254
echo プライマリーDNS:192.168.%base%.253
echo セカンダリーDNS:%dns_sec%
echo;
set net_config=
set /p net_config=上記の通り設定します。よろしいですか?(Y=YES / N=NO):

if /i "%net_config%"=="y" (
    rem IPアドレスの設定
    netsh interface ipv4 set addr name="%Interface%" source=static addr="%IP_addr%" mask="255.255.255.0" gateway="192.168.%base%.254"

    rem プライマリーDNSサーバの設定
    netsh interface ipv4 set dns name="%Interface%" source=static addr="192.168.%base%.253" register=primary validate=no

    rem セカンダリーDNSサーバの設定
    netsh interface ipv4 add dns name="%Interface%" addr="%dns_sec%" index=2 validate=no

    rem NAS上で動作できるようにIPアドレスを変更してから再接続までの待機時間を10秒設定しています。
    timeout /nobreak 10 > /null

  ) else (
    echo 設定をキャンセルしました。
    goto net_config_end 
) 

echo ネットワーク設定が完了しました。

:net_config_end

pause

DHCPにする設定

動作イメージ

バッチファイル

@echo off

rem 管理者権限強制昇格
cd /d %~dp0
openfiles > nul

if "%1"=="" (
set arg=
) else (
set arg= -ArgumentList "%1"
)
if errorlevel 1 (
   PowerShell.exe -Command Start-Process \"%~f0\"%arg% -Verb runas
   exit
)

rem インターフェース名表示
echo ネットワーク・インターフェース一覧
netsh int ip show int

set Interface=
set /p Interface=設定するインターフェース名を指定してください。(Idx or name):

echo 設定インターフェース:%Interface%

set /p net_config=上記のインターフェースをDHCPに設定します。よろしいですか?(Y=YES / N=NO):

if /i "%net_config%"=="y" (
    netsh interface ipv4 set add name="%Interface%" source=dhcp
    netsh interface ipv4 set dnsservers name="%Interface%" source=dhcp    
    timeout /nobreak 5 > /null
  ) else (
    echo 設定をキャンセルしました。
    goto net_config_end 
) 

echo ネットワーク設定が完了しました。

echo DHCPに設定しました。

:net_config_end

pause

この記事が役に立ったと思ったらなにかいただけると嬉しいです。

https://amzn.to/2ZX1ToW

 

ブログランキングクリックお願いします!


女装(ノンアダルト)ランキング


パソコンランキング

コメント

タイトルとURLをコピーしました