お客様のところに行って、IPを設定する際に、特にWindows11が面倒になってきた。(設定クリックして、その中の~~~って感じで入っていくのが面倒)
そこで、バッチか、Powershellのスクリプトでいいじゃん!って思ったけど、バッチはnetshコマンドでやればいいからよいとして、Powershellスクリプトでメニュー形式にできれば楽だな~~って思ったら・・・・・
LANケーブルが刺さっているか、WI-FI接続ずみでないと、設定が変更できないことが判明(2025/7/29)
自分のPCでは、お客様のところで、IPを設定してからしか接続できないので、このままでは使えない!!! って思っちゃいました。
そ今まだ、ケーブルを刺さないで設定変更のスクリプトは検証中ですが、LANケーブルを刺した状態でのIPの設定変更ができるPowerShellスクリプト5が動作したので、下記の記載します。
ただ動かなかったらすいませんm(__)m。Windows10では確認しました。
# PowerShell 5対応 - NIC初期化+静的/DHCP再設定ツール ケーブル接続済み前提
function Show-NICMenu {
$nics = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' -or $_.Status -eq 'Disconnected' }
if (-not $nics -or $nics.Count -eq 0) {
Write-Host "NICが見つかりません。" -ForegroundColor Red
exit 1
}
Write-Host "===== 使用可能なNIC一覧 =====" -ForegroundColor Cyan
for ($i = 0; $i -lt $nics.Count; $i++) {
Write-Host "[$i] Name: $($nics[$i].Name), Status: $($nics[$i].Status), Mac: $($nics[$i].MacAddress)"
}
do {
$selection = Read-Host "番号を入力してください(0〜$($nics.Count - 1))"
} while (-not ($selection -match '^\d+$') -or $selection -ge $nics.Count)
return $nics[$selection].Name
}
function Clear-IPv4Config {
param([string]$nicName)
Write-Host "`n--- [$nicName] のIP/GW/DNS設定を削除します ---" -ForegroundColor Yellow
# IP削除
Get-NetIPAddress -InterfaceAlias $nicName -AddressFamily IPv4 -ErrorAction SilentlyContinue |
Remove-NetIPAddress -Confirm:$false -ErrorAction SilentlyContinue
# GW削除
Get-NetRoute -InterfaceAlias $nicName -DestinationPrefix "0.0.0.0/0" -ErrorAction SilentlyContinue |
Remove-NetRoute -Confirm:$false -ErrorAction SilentlyContinue
# DNSリセット
Set-DnsClientServerAddress -InterfaceAlias $nicName -Reset -ErrorAction SilentlyContinue
# DHCP無効化(←重要) → 反映されるまで待機(最大10秒)
Set-NetIPInterface -InterfaceAlias $nicName -Dhcp Disabled -ErrorAction SilentlyContinue
$waitTime = 0
while ((Get-NetIPInterface -InterfaceAlias $nicName).Dhcp -ne "Disabled" -and $waitTime -lt 10) {
Start-Sleep -Seconds 1
$waitTime++
}
if ((Get-NetIPInterface -InterfaceAlias $nicName).Dhcp -ne "Disabled") {
Write-Host "⚠ DHCPの無効化に失敗した可能性があります。" -ForegroundColor Red
} else {
Write-Host "✔ 初期化完了(IP/GW/DNS削除 & DHCP無効化)" -ForegroundColor Green
}
}
function Set-NICIP {
param([string]$nicName)
Write-Host "`n$nicName に設定を適用します。" -ForegroundColor Yellow
$choice = Read-Host "DHCPに設定しますか?(y: DHCP / n: 静的IP)"
if ($choice -eq 'y') {
Write-Host "→ DHCPを有効に設定中..."
Set-NetIPInterface -InterfaceAlias $nicName -Dhcp Enabled -ErrorAction SilentlyContinue
Set-DnsClientServerAddress -InterfaceAlias $nicName -Reset
Write-Host "✔ DHCP設定完了。" -ForegroundColor Green
}
elseif ($choice -eq 'n') {
$ip = Read-Host "IPアドレス(例: 192.168.1.100)"
$mask = Read-Host "プレフィックス長(例: 24)"
$gw = Read-Host "ゲートウェイ(例: 192.168.1.1)"
$dns = Read-Host "DNS(カンマ区切り: 8.8.8.8,1.1.1.1)"
Write-Host "→ 静的IPを設定中..."
# DHCPがオフであることを確認(念のため)
Set-NetIPInterface -InterfaceAlias $nicName -Dhcp Disabled -ErrorAction SilentlyContinue
# 再チェックと待機(5秒以内に反映されなければ警告)
$wait = 0
while ((Get-NetIPInterface -InterfaceAlias $nicName).Dhcp -ne "Disabled" -and $wait -lt 5) {
Start-Sleep -Seconds 1
$wait++
}
# IP設定実行
New-NetIPAddress -InterfaceAlias $nicName -IPAddress $ip -PrefixLength $mask -DefaultGateway $gw -ErrorAction Stop
# DNS設定
Set-DnsClientServerAddress -InterfaceAlias $nicName -ServerAddresses ($dns -split ",") -ErrorAction Stop
Write-Host "✔ 静的IP設定完了。" -ForegroundColor Green
}
else {
Write-Host "⚠ 無効な入力です(y または n を入力してください)" -ForegroundColor Red
}
}
# === 実行開始 ===
Write-Host "`n=== NIC IP設定ツール(初期化+再設定)===" -ForegroundColor Cyan
$nicName = Show-NICMenu
if ($nicName) {
Clear-IPv4Config -nicName $nicName
Set-NICIP -nicName $nicName
}






コメント