Invoke-WebRequest
は PowerShell でウェブサイトにアクセスするためのコマンドです。
HTTP/ヘッダーの情報やレスポンスコードを取得したり、ファイルをダウンロードしたりするのに使用されます。
基本シンタックス
基本的な使い方は、ユーザーが指定した URL にアクセスしてページのコンテンツを取得することです。
下記は基本的な例です。
Invoke-WebRequest -Uri "https://example.com"
このコマンドは、https://example.com
に HTTP GET リクエストを送り、対応するレスポンスの情報を取得します。
結果は PowerShell オブジェクトとして返されます。
出力情報の内容
Invoke-WebRequest
の結果は Microsoft.PowerShell.Commands.HtmlWebResponseObject というタイプのオブジェクトで、下記のような情報を含みます。
- Content: HTML コンテンツ。
- StatusCode: HTTP ステータスコード (200, 404 など)。
- Headers: HTTP ヘッダー情報。
- 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
は、さまざまなネットワーク操作に対応しており、作業自動化にも役立ちます。