PowerShellで外部APIを呼び出したいときに、よく使われるコマンドレットが Invoke-RestMethod と Invoke-WebRequest です。
どちらもHTTP通信を実行できますが、用途や戻り値の扱いが大きく異なるため、適切に使い分ける必要があります。
この記事では、両者の違いと実際のコード例、APIの基本的な呼び出し方法をわかりやすく解説します。
✔ 結論(違いを一言で)
| コマンドレット | 主な用途 | 戻り値 | 向いているケース |
|---|---|---|---|
| Invoke-RestMethod | REST API向け | JSONが自動的にオブジェクト化される | APIレスポンスをそのまま処理したい |
| Invoke-WebRequest | Webサイト取得向け | HTML/レスポンス全体(ヘッダ含む) | HTML解析、ファイルダウンロード、詳細検証 |
Invoke-RestMethod の使い方(REST API向け)
📌 JSONを返すAPIを叩く典型例
|
1 2 3 4 |
$url = "https://api.example.com/users" $response = Invoke-RestMethod -Uri $url -Method Get $response |
ポイント
-
JSONレスポンスは自動的に PowerShell のオブジェクトに変換される
-
$response.users.nameのようにプロパティへ直接アクセス可能
認証付き(Bearer Token)
POSTでデータ送信
Invoke-WebRequest の使い方(HTML取得/ファイルDL向け)
📌 WebページのHTMLを取得して解析
ファイルのダウンロード
取得できる情報の例
使い分けの目安
| 状況 | 選択 |
|---|---|
| REST APIを扱う | Invoke-RestMethod |
| レスポンスJSONをそのまま解析したい | Invoke-RestMethod |
| Webサイト情報のスクレイピング | Invoke-WebRequest |
| HTTPヘッダ/ステータス/生データを確認 | Invoke-WebRequest |
| ファイルDLをする | Invoke-WebRequest |
例:APIを叩いて結果を加工して表示
API通信でよくあるトラブルと対処
| 発生状況 | 原因 | 対処 |
|---|---|---|
| 401 Unauthorized | 認証情報不足 | Token or API key を設定 |
| 403 Forbidden | 権限不足/IP制限 | API側設定を確認 |
| 415 Unsupported Media Type | Content-Type指定不足 | -ContentType "application/json" |
| JSONが扱えない | 文字列のまま返却 | ConvertFrom-Json を使用 |
まとめ
-
APIを叩くならまずは Invoke-RestMethod を使う
-
HTML解析やファイルDL、ヘッダ検証なら Invoke-WebRequest
-
JSONレスポンスを扱う場合は自動オブジェクト化が便利
PowerShellはサーバ監視、バッチ連携、クラウドAPI連携など多くの場面でAPI操作が必要になります。
違いを理解して効率良く活用していきましょう。
