logo-sm

お問い合わせは Webフォームから

ブログ

VSCode (内のPowerShell)でアドレス設定を切り替え!

2023.10.13

【経緯】

最近携わった案件で大量の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

関連記事

  • WindowsのWSL2上のDockerでup時に’ContainerConfig’のエラーが出た。
    当社の開発環境はMacとWindowsが混在したDocker上での開発を行っています。なのでMacでOKだけど […]

    2024.04.08

  • PaloaltoでWindows NTPサーバに同期
    【事象と対処法】 オフライン環境のPaloaltoでNTPの機能確認をする必要があり、Windows標準のNT […]

    2023.10.13

  • Cisco Packet Tracerを使ってネットワークを学習しよう! -2-
    Packet Tracer紹介の2回目です。今回は、CCNA試験範囲の中で、多くの方にとって理解しにくい技術の […]

    2023.03.28

  • パートナー

  • 人材育成・採用情報