PowerShellでURL先のステータスチェックをする

Invoke-WebRequestを使うのが手っ取り早い

$url = "https://example.com"
try {
    $response = Invoke-WebRequest -Uri $url -Method Head -UseBasicParsing -ErrorAction Stop
    Write-Host "HTTPステータスコード: $($response.StatusCode)"
} catch {
    Write-Host "エラー: $($_.Exception.Message)"
}

これで俗に言う『404エラー』とかそんな感じのがメッセージとして取れます。

Test-Connectionを使う方法もあるけど、Test-Connectionはpingに近い感じのイメージ。ステータスチェックというよりは疎通確認に近い。

Webサービスの挙動の確認をしたいのなら、Test-Connection→Invoke-WebRequestって重ねてチェックしておけばどこで落ちてるかの判断がしやすくなりそうです。

Invoke-WebRequestを使うとこんな感じ

一応Invoke-WebRequestの方も載せておきます。

$url = "example.com"
try {
    $result = Test-Connection $url -Count 1 -ErrorAction Stop
    Write-Host "ステータス: $($result.StatusCode)"
} catch {
    Write-Host "エラー: $($_.Exception.Message)"
}

繰り返すときは時間を置こう

念のため書いておきますが、同じサイトに連続してアクセスするときは間を空けてアクセスしましょう。一歩間違えればDOS攻撃になります。

Start-Sleep -s 5

for文にするときは実行待ちを挟むのを忘れずに。