PowerShellはWindows環境に標準で搭載されており、システム管理者だけでなく多くの業務自動化にも活用されています。中でも、外部のWeb APIにアクセスしてデータを取得・送信する技術は、日々の業務を大幅に効率化してくれます。本記事では、PowerShellを使ってREST APIにアクセスする方法を、GET・POSTリクエストの基本からJSONの扱い方、認証付きのアクセス方法までわかりやすく解説します。API初心者の方も実際のコードを見ながら学べる内容となっています。
PowerShellでAPIにアクセスする基本
PowerShellでAPIにアクセスするには、主に Invoke-RestMethod
コマンドレットを使用します。このコマンドはHTTPリクエストを簡単に実行できる便利なツールです。
例えば、以下はGETメソッドでAPIからデータを取得する基本の形です。
$response = Invoke-RestMethod -Uri "https://api.example.com/data"
$response
このコードを実行すると、指定したURLから返されたJSONデータが自動的にオブジェクトとして変換され、PowerShellで扱いやすくなります。
GETメソッドでデータを取得する
まずは最も基本的なGETリクエストから学びましょう。以下は実際のサンプルです。
$uri = "https://jsonplaceholder.typicode.com/posts/1"
$response = Invoke-RestMethod -Method Get -Uri $uri
$response
この例では、ダミーAPI「JSONPlaceholder」から特定の投稿データを取得しています。取得したデータは、$response.title
や $response.body
といった形で個別にアクセスできます。
POSTメソッドでデータを送信する
APIにデータを送るには、POSTメソッドを使用します。フォームの送信や、新規登録の処理に利用されます。
$uri = "https://jsonplaceholder.typicode.com/posts"
$body = @{
title = "PowerShellからの投稿"
body = "これはPowerShellから送ったサンプルです。"
userId = 1
} | ConvertTo-Json
$response = Invoke-RestMethod -Method Post -Uri $uri -Body $body -ContentType "application/json"
$response
このコードでは、ハッシュテーブルでデータを作成し、ConvertTo-Json
でJSON形式に変換してからAPIに送信しています。APIからのレスポンスも受け取れるので、結果をそのままログに残したり、条件処理に利用できます。
JSONデータの操作方法
PowerShellでは、APIから取得したJSONを簡単に扱うことができます。JSONは自動的にオブジェクトに変換されるため、以下のように使えます。
$uri = "https://jsonplaceholder.typicode.com/users"
$response = Invoke-RestMethod -Uri $uri
foreach ($user in $response) {
Write-Output "名前: $($user.name) | メール: $($user.email)"
}
このようにして、APIから取得した複数データをループで処理することが可能です。
認証付きAPIへのアクセス方法(Bearer Token)
APIによっては、セキュリティのために認証トークン(Bearer Token)を要求する場合があります。PowerShellでの記述例は以下の通りです。
powershellコピーする編集する$uri = "https://api.secureexample.com/data"
$token = "your_api_token_here"
$headers = @{
Authorization = "Bearer $token"
}
$response = Invoke-RestMethod -Method Get -Uri $uri -Headers $headers
$response
このように、-Headers
オプションでヘッダーに認証情報を付加することで、保護されたAPIにもアクセスできます。
エラーハンドリングとステータスコードの確認
APIアクセス中にエラーが発生することもあります。例えば、サーバー側の問題や認証エラーなどが考えられます。Try/Catch
構文を使ってエラー処理を記述しましょう。
try {
$response = Invoke-RestMethod -Uri "https://api.example.com/data"
Write-Output "データ取得成功"
} catch {
Write-Error "エラーが発生しました: $_"
}
また、Invoke-WebRequest
を使用すれば、HTTPステータスコードも明示的に確認できます。
$response = Invoke-WebRequest -Uri "https://api.example.com/data"
$response.StatusCode
実用例:天気予報APIにアクセスする
ここでは、OpenWeatherMapという無料の天気予報APIにアクセスしてみましょう。以下のコードで東京の現在の天気を取得できます。
$city = "Tokyo"
$apiKey = "your_openweather_api_key"
$uri = "https://api.openweathermap.org/data/2.5/weather?q=$city&appid=$apiKey&units=metric&lang=ja"
$response = Invoke-RestMethod -Uri $uri
Write-Output "現在の天気: $($response.weather[0].description)"
Write-Output "気温: $($response.main.temp) ℃"
APIキーは事前に公式サイトで登録して取得しておく必要があります。
APIスクリプトをスケジュールで自動実行する
取得したAPIスクリプトは、Windowsの「タスクスケジューラ」と組み合わせることで定期実行が可能です。たとえば毎朝7時に天気を取得してログに出力するなど、業務効率化に活用できます。
スクリプトを .ps1
ファイルとして保存し、タスクスケジューラからPowerShellで実行するだけでOKです。
まとめ
PowerShellを使えば、APIとの通信は非常に簡単かつ強力なツールとなります。GET/POSTリクエスト、JSONデータの処理、認証付きアクセスまで基本的なスキルを習得することで、さまざまな業務を自動化できるようになります。外部システムやクラウドサービスとの連携も視野に入れ、PowerShellスクリプトを日常業務に活かしてみましょう。PowerShellでAPIにアクセスする方法|GET・POSTの基本からJSON処理まで徹底解説