ブログ
VSCode (内のPowerShell)でアドレス設定を切り替え!
最近携わった案件で大量のNW機器のキッティングをした際、それぞれにSSHでの接続性などを確認するテストを行ったのですが、機器ごとに許可されている接続元IPが違うこともありPCのアドレスを頻繁に変更する必要に駆られました。
毎度コントロールパネルを開いて手作業で設定するのは限界に思えたので、作業中開きっぱなしのVSCodeで簡単に設定を切り替えられるといいなと思った結果PowerShellのスクリプトを組むことにしました。
改めてやりたいことをと書き出すと、以下のようになります。
・インターフェイスの設定(アドレス/サブネット/デフォゲ)を簡単に切り替えたい
・デフォルトゲートウェイは設定したいパターンと設定したくないパターンがあり、どちらにも対応できる形にしたい
これらの要素を満たした仕組みを考えていきましょう
早速組んでみました。
使用する際は、# 定義 のパラメータを任意の値に置き換えたスクリプトファイルを好きな数だけ揃えてください。
# 昇格 if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole("Administrators")) { Start-Process powershell.exe "-File `"$PSCommandPath`"" -Verb RunAs; exit } # 定義 $IF = "イーサネット" $IP = "192.168.1.10" $Prefix = "24" $Gateway = "192.168.1.1" # IF 設定値初期化 $State = Get-NetIPConfiguration -InterfaceAlias $IF if ($State.IPv4Address.IPAddress) { Get-NetAdapter -Name $IF | Remove-NetIPAddress -confirm:$false } if ($State.Ipv4DefaultGateway) { Get-NetAdapter -Name $IF | Remove-NetRoute -DestinationPrefix 0.0.0.0/0 -confirm:$false } # IF 設定値変更 if ($Gateway) { New-NetIPAddress -InterfaceAlias $IF -AddressFamily IPv4 -IPAddress $IP -PrefixLength $Prefix -DefaultGateway $Gateway } else { New-NetIPAddress -InterfaceAlias $IF -AddressFamily IPv4 -IPAddress $IP -PrefixLength $Prefix }
実際の動きを確認してみます。
「Ctrl + @」でターミナルを開きipconfigを実行。今回は「USB Hab1」に変更を加えるスクリプトを準備しました。現在はアドレス設定がない状態です。
スクリプトを実行しようとすると、「このアプリがデバイスに変更を加えることを許可しますか?」と確認のウィンドウが出てくるので、「はい」を選択。
管理者権限で新しくPowerShellが開き、処理を実施後はひとりでに閉じられます。
ipconfigで再確認すると、「USB Hab1」にアドレス設定がなされていることを確認できました! ご覧いただきありがとうございました。
デフォルトゲートウェイを設定したくないときは、「$Gateway = “”」のように変数内を空にするか、「# $Gateway = “192.168.1.1”」のようにコメントアウトしてください。
確認時はPowerShellがスクリプトの置いてあるディレクトリにおり、またPathも設定済みだったためスクリプトの名前を入れるだけで実施できる状況でした。
Pathが通っていなくても、VSCode内のエクスプローラーからスクリプトのファイルが見れていればドラッグ&ドロップで実行できるので、そちらでも手軽に実行できるためおすすめです。
https://correct-log.com/powershell_auto_admin/
https://www.vwnet.jp/windows/PowerShell/2019052501/SetIPAddress.htm
https://hitoriit.blog/archives/2441
関連記事
2024.09.30
2024.09.30
2024.04.08