スポンサーリンク

【PowerShell】Invoke-WebRequestの使い方

記事内に広告が含まれています。

Invoke-WebRequest は PowerShell でウェブサイトにアクセスするためのコマンドです。

HTTP/ヘッダーの情報やレスポンスコードを取得したり、ファイルをダウンロードしたりするのに使用されます。

スポンサーリンク

基本シンタックス

基本的な使い方は、ユーザーが指定した URL にアクセスしてページのコンテンツを取得することです。

下記は基本的な例です。

Invoke-WebRequest -Uri "https://example.com"

このコマンドは、https://example.comに HTTP GET リクエストを送り、対応するレスポンスの情報を取得します。

結果は PowerShell オブジェクトとして返されます。

スポンサーリンク

出力情報の内容

Invoke-WebRequest の結果は Microsoft.PowerShell.Commands.HtmlWebResponseObject というタイプのオブジェクトで、下記のような情報を含みます。

  1. Content: HTML コンテンツ。
  2. StatusCode: HTTP ステータスコード (200, 404 など)。
  3. Headers: HTTP ヘッダー情報。
  4. RawContent: 生のレスポンスデータ。

下記は一部の情報を取得する例です。

$response = Invoke-WebRequest -Uri "https://example.com"
$response.StatusCode  # HTTPステータスコードを取得
$response.Headers     # HTTPヘッダーを取得
$response.Content     # HTMLコンテンツを取得

出力をファイルに書き込む

結果をファイルに書き込みたい場合は、Out-File を使用します。

$response = Invoke-WebRequest -Uri "https://example.com"
$response.Content | Out-File -FilePath "output.html"

POST リクエスト

HTTP POST リクエストを送ることも可能です。

たとえば、フォームのデータを送信する場合、-Method パラメーターで指定します。

Invoke-WebRequest -Uri "https://example.com/api" -Method POST -Body @{key1="value1"; key2="value2"}

ボディーは配列の形式でも、JSON でも指定可能です。

JSON の場合、ConvertTo-Json を使用します。

$jsonBody = @{key1="value1"; key2="value2"} | ConvertTo-Json -Depth 10
Invoke-WebRequest -Uri "https://example.com/api" -Method POST -Body $jsonBody -ContentType "application/json"

認証が必要なアクセス

認証が必要な場合は、-Credential パラメーターで指定します。

$credential = Get-Credential
Invoke-WebRequest -Uri "https://example.com" -Credential $credential

ファイルのダウンロード

ファイルをダウンロードするのには、-OutFile パラメーターを使用します。

Invoke-WebRequest -Uri "https://example.com/file.zip" -OutFile "file.zip"

クーキーを含めるリクエスト

クーキーを含めてリクエストを送信することも可能です。

Invoke-WebRequest -Uri "https://example.com" -Headers @{"Cookie"="key=value"}

エラー処理

HTTP リクエストに失敗した場合、デフォルトでエラーが出力されます。

これを回避するために、-ErrorAction を使用します。

$response = Invoke-WebRequest -Uri "https://example.com" -ErrorAction SilentlyContinue
if ($response.StatusCode -eq 200) {
    "Success"
} else {
    "Failed"
}

おわりに

Invoke-WebRequest は、さまざまなネットワーク操作に対応しており、作業自動化にも役立ちます。

タイトルとURLをコピーしました