IPv4アドレスをチェックし、PingでIP到達性を確認する
このコードでは、入力されたIPアドレスが、IPv4のフォーマットに従っているか正規表現を使って確認し、正しい入力値であればPingコマンドで実際にIP到達性を確認します。
ユースケースのポイント
- ターミナルでの入力受付
- 正規表現を使ったIPv4アドレスのフォーマット確認
- IF文での条件分岐
以下、環境です。
Windows 10 Enterprise
PowerShell 5.1
input.ps1
chcp 65001 | Out-Null
$inputIp = Read-Host "Please input your target IP address(IPv4 only)"
IF ($inputIp -match '^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$') {
Write-Host "Your target IP address is" $inputIp
} else {
Write-Host "Input IP address was NOT appropriate."
exit
}
$result = Test-Connection $inputIp -Count 1 -Quiet
IF ($result -eq "True") {
Write-Host "Target IP address is reachable."
} else {
Write-Host "No reachability on your input IP address"
exit
}
コード解説
line1.ps1
$inputIp = Read-Host "Please input your target IP address(IPv4 only)"
- Read-Host : このコマンドレットでIPアドレスの入力を促し、その値を変数 $inputIp に代入
line2.ps1
$inputIp -match '^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$'
- -match を使って、変数 $inputIp の値がIPv4のフォーマットになっているか確認
line3.ps1
$result = Test-Connection $inputIp -Count 1 -Quiet
IF ($result -eq "True") {
Write-Host "Target IP address is reachable."
- 変数 $inputIP に正しいIPアドレスが入力されていることを確認できたので、そのアドレスにTest-Connectionを使ってIP到達性を確認
-
Test-ConnectionにQuietを付けることで、Boolen値を返してくれるので結果を Trueであるかを確認している。
※PowerShell 5.1の環境ではPingと$LastExitCodeの組み合わせで、Pingが失敗しても0を返すため判別できなかったので、Test-Connectionに修正した。