【PowerShell】batでIPの設定を変えたかった話
はじめに
IPアドレスを変更するbatです。リモート操作で実施すると接続が切れる可能性があるので、ローカルで実行する前提となります。
また、動作イメージは下記のとおりです
IPを設定したい物理アダプタの番号を調べる(初回のみ)
調べた番号を基に、IPアドレス設定batを修正(初回のみ)
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ではできないようです。