【PowerShell】batでIPの設定を変えたかった話

はじめに

IPアドレスを変更するbatです。リモート操作で実施すると接続が切れる可能性があるので、ローカルで実行する前提となります。
また、動作イメージは下記のとおりです

  1.  IPを設定したい物理アダプタの番号を調べる(初回のみ)

  2.  調べた番号を基に、IPアドレス設定batを修正(初回のみ)

  3.  IPアドレス設定batを実行してIPアドレスを設定

checkIFIndex.bat

コード

@echo off

powershell Get-NetAdapter -Physical

pause

実行結果

※管理者として実行する

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Wi-Fi                     Intel(R) Wi-Fi 6 AX201 160MHz                19 Up           xx-xx-xx-xx-xx-xx     144.4 Mbps
イーサネット              ASIX USB to Gigabit Ethernet Family ...      11 Up           xx-xx-xx-xx-xx-xx         1 Gbps


続行するには何かキーを押してください . . .

やること

上記結果から、設定変更したいアダプタのifIndexを確認する。
今回は無線のイーサネットの変更をしたいため、ifIndexは19と分かる。

setIPAddr.bat

各種設定は都度チューニングが必要。
PFはprefixで、24であればサブネットマスクが255.255.255.0となる。
また、設定確認前に10秒間waitを設けて、設定が反映されるまで待機する。

@echo off

rem ■各種設定 --------------------------------------------------

set IFINDEX=19
set IPv4=192.168.11.32
set PF=24
set DGW=192.168.11.1
set DNS=8.8.8.8

setIPAddr.bat
rem ■IFの設定を削除 --------------------------------------------------

echo DNS設定を削除
powershell Set-DnsClientServerAddress -InterfaceIndex %IFINDEX% -ResetServerAddresses

echo IPアドレス設定を削除
powershell Remove-NetIPAddress -InterfaceIndex %IFINDEX% -Confirm:$false

echo DHCPを有効化
powershell Set-NetIPInterface -InterfaceIndex %IFINDEX% -Dhcp Enabled

echo ルーティング(デフォルトゲートウェイ)の削除
powershell Remove-NetRoute -InterfaceIndex %IFINDEX%  -Confirm:$false


rem ■IFに設定を投入 --------------------------------------------------

echo DHCPを無効化
powershell Set-NetIPInterface -InterfaceIndex %IFINDEX% -Dhcp Disable

echo DNSを設定
powershell Set-DnsClientServerAddress -InterfaceIndex %IFINDEX% -ServerAddresses %DNS%

echo IPアドレス、サブネットマスク、デフォルトゲートウェイを設定
powershell New-NetIPAddress -InterfaceIndex %IFINDEX% -AddressFamily ipv4 -IPAddress %IPv4% -PrefixLength %PF% -DefaultGateway %DGW%


rem ■設定確認 --------------------------------------------------
timeout /t 10 > nul
ipconfig

pause

実行結果

※管理者として実行する

DNS設定を削除
IPアドレス設定を削除
DHCPを有効化
ルーティング(デフォルトゲートウェイ)の削除
DHCPを無効化
DNSを設定
IPアドレス、サブネットマスク、デフォルトゲートウェイを設定


IPAddress         : 192.168.11.32
InterfaceIndex    : 19
InterfaceAlias    : Wi-Fi
AddressFamily     : IPv4
Type              : Unicast
PrefixLength      : 24
PrefixOrigin      : Manual
SuffixOrigin      : Manual
AddressState      : Tentative
ValidLifetime     :
PreferredLifetime :
SkipAsSource      : False
PolicyStore       : ActiveStore

IPAddress         : 192.168.11.32
InterfaceIndex    : 19
InterfaceAlias    : Wi-Fi
AddressFamily     : IPv4
Type              : Unicast
PrefixLength      : 24
PrefixOrigin      : Manual
SuffixOrigin      : Manual
AddressState      : Invalid
ValidLifetime     :
PreferredLifetime :
SkipAsSource      : False
PolicyStore       : PersistentStore




Windows IP 構成


イーサネット アダプター イーサネット 3:

   接続固有の DNS サフィックス . . . . .:
   自動構成 IPv4 アドレス. . . . . . . .: 169.254.240.68
   サブネット マスク . . . . . . . . . .: 255.255.0.0
   デフォルト ゲートウェイ . . . . . . .:


Wireless LAN adapter Wi-Fi:

   接続固有の DNS サフィックス . . . . .:
   IPv4 アドレス . . . . . . . . . . . .: 192.168.11.32
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: 192.168.11.1
続行するには何かキーを押してください . . .

おわりに

speed/duplexもコマンドで変更したかったが、windowsではできないようです。

いいなと思ったら応援しよう!