アドレス

それでは、Windowsでのイーサネット用IPアドレス切り替えスクリプトについて、総括的な説明をさせていただきます。
作成したスクリプトの目的と概要
このスクリプトは、Windowsパソコンのイーサネット接続において、IPアドレスの設定を簡単に切り替えられるようにするものです。主に、自動取得(DHCP)モードと固定IPアドレスモードの間を、ワンクリックで切り替えることができます。
基本構成と動作の仕組み
スクリプトは、Windowsのコマンドライン(cmd)を利用して、netshコマンドでネットワーク設定を変更します。管理者権限で実行する必要があり、その確認機能も組み込まれています。シンプルなメニュー形式のインターフェースで、数字キーを押すだけで設定を変更できます。
カスタマイズのポイント
スクリプトの上部にある設定値を、ご使用のネットワーク環境に合わせて変更する必要があります:
set "static_ip=192.168.1.100" // 使用したい固定IPアドレス
set "subnet_mask=255.255.255.0" // サブネットマスク
set "default_gateway=192.168.1.1" // ルーターのIPアドレス
set "dns_primary=8.8.8.8" // 優先DNSサーバー
set "dns_secondary=8.8.4.4" // 代替DNSサーバー
設定ファイルの使い方
- スクリプトをテキストエディタ(メモ帳など)で開き、上記の設定値を編集します。
- 「ip-switcher.bat」という名前で保存します。
- 保存したファイルを右クリックして「管理者として実行」を選択します。
- メニューから希望の操作(1: 自動取得、2: 固定IP)を選択します。
主な機能の説明
-
自動取得(DHCP)モード:
ネットワークから自動的にIPアドレスを取得します。一般的な家庭やオフィスでの標準的な設定です。 -
固定IPアドレスモード:
指定した固定のIPアドレスを使用します。サーバーやネットワーク機器の設定時によく使用される設定です。 -
現在の設定確認:
現在のIPアドレスを常に画面に表示し、設定変更前後の状態を確認できます。
実装上の工夫
- エラー処理:管理者権限の確認や無効な入力のチェックを行います。
- シンプルな表示:必要最小限の情報のみを表示し、操作を分かりやすくしています。
- 静かな実行:バックグラウンドでのコマンド実行により、画面表示をクリーンに保ちます。
このスクリプトを使用することで、通常は複雑なネットワーク設定の変更作業が、数秒で完了する簡単な操作となります。特に、異なるネットワーク環境を行き来する場合や、ネットワーク機器の設定作業を行う際に非常に便利です。
なお、固定IPアドレスを設定する際は、同じネットワーク内で他の機器とIPアドレスが重複していないことを確認することが重要です。また、ルーターのIPアドレス(デフォルトゲートウェイ)は環境によって異なる場合があるため、正しい値を設定する必要があります。

PowerShellを使用したアプローチについて説明させていただきます。PowerShellは、Windowsの最新の管理ツールとして、より強力で柔軟な機能を提供できます。
PowerShellスクリプトには、以下のような利点があります:
-
より洗練された権限管理:
PowerShellは、管理者権限が必要な場合に自動的に昇格を試みます。バッチファイルと異なり、ユーザーにより分かりやすい形で権限の要求を行います。 -
エラー処理の向上:
PowerShellには組み込みのエラー処理機能があり、問題が発生した場合により詳細な情報を提供できます。また、ErrorAction
パラメータを使用することで、エラーの処理方法をきめ細かく制御できます。 -
視覚的な改善:
PowerShellでは色付きのテキスト出力が可能で、状態や警告をより分かりやすく表示できます。例えば、現在のIPアドレスは緑色で、警告は黄色で表示されます。 -
より安全な設定変更:
PowerShellのコマンドレットは、設定変更時に確認を行い、エラーが発生した場合も安全に処理を続行できます。また、-Confirm:$false
パラメータを使用することで、必要に応じて確認メッセージを抑制することもできます。 -
柔軟な拡張性:
将来的な機能追加や変更が容易で、より高度な機能(例:設定のバックアップや復元)を簡単に追加できます。
使用方法は以前のバッチファイルと同様にシンプルです:
- スクリプトを「ip-switcher.ps1」として保存します。
- スクリプト内の設定値(IPアドレスなど)を環境に合わせて編集します。
- スクリプトを右クリックして「PowerShellで実行」を選択します。
- 管理者権限が必要な場合は自動的に要求されます。
- メニューから希望の操作(1: 自動取得、2: 固定IP)を選択します。
このPowerShellスクリプトは、より現代的で信頼性の高いアプローチを提供します。特に、ネットワーク設定の変更をより確実に行い、問題が発生した場合もより適切に対処できます。また、コードの可読性が高く、将来の保守や機能追加も容易になっています。
なお、PowerShellスクリプトを実行するには、実行ポリシーの設定が必要な場合があります。その場合は、管理者権限のPowerShellで以下のコマンドを実行して、スクリプトの実行を許可する必要があります:
Set-ExecutionPolicy RemoteSigned
これにより、ローカルで作成したスクリプトを実行できるようになります。セキュリティ上の理由から、必要なスクリプトの実行が終わった後は、実行ポリシーを元に戻すことをお勧めします。

@echo off
setlocal enabledelayedexpansion
:: 管理者権限チェック
net session >nul 2>&1
if %errorLevel% neq 0 (
echo 管理者権限で実行してください。
echo 右クリックから「管理者として実行」を選択してください。
pause
exit /b 1
)
:: ネットワークアダプター名の設定(環境に応じて変更してください)
set ADAPTER_NAME="イーサネット"
:: IPアドレス設定(環境に応じて変更してください)
set IP_ADDRESS=192.168.1.100
set SUBNET_MASK=255.255.255.0
set DEFAULT_GATEWAY=192.168.1.1
set DNS_SERVER=8.8.8.8
echo ネットワーク設定を固定IPアドレスに変更します...
echo アダプター: %ADAPTER_NAME%
echo IPアドレス: %IP_ADDRESS%
echo サブネットマスク: %SUBNET_MASK%
echo デフォルトゲートウェイ: %DEFAULT_GATEWAY%
echo DNSサーバー: %DNS_SERVER%
:: 設定の変更確認
set /p CONFIRM="この設定で変更を実行しますか? (Y/N): "
if /i "%CONFIRM%" neq "Y" (
echo 設定を中止します。
pause
exit /b 0
)
:: ネットワーク設定の変更
netsh interface ip set address name=%ADAPTER_NAME% static %IP_ADDRESS% %SUBNET_MASK% %DEFAULT_GATEWAY%
if %errorLevel% neq 0 (
echo IPアドレスの設定中にエラーが発生しました。
pause
exit /b 1
)
:: DNSサーバーの設定
netsh interface ip set dns name=%ADAPTER_NAME% static %DNS_SERVER%
if %errorLevel% neq 0 (
echo DNSサーバーの設定中にエラーが発生しました。
pause
exit /b 1
)
:: 設定の確認
echo.
echo 設定が完了しました。新しい設定を確認します...
ipconfig /all | findstr /C:"IPv4" /C:"サブネット" /C:"デフォルト ゲートウェイ" /C:"DNS"
:: 接続テスト
echo.
echo 接続テストを実行します...
ping -n 1 %DEFAULT_GATEWAY% > nul
if %errorLevel% equ 0 (
echo ゲートウェイとの接続: 成功
) else (
echo ゲートウェイとの接続: 失敗
)
ping -n 1 8.8.8.8 > nul
if %errorLevel% equ 0 (
echo インターネットとの接続: 成功
) else (
echo インターネットとの接続: 失敗
)
pause