SDKなしでMicrosoft Graph APIをPowerShellから呼ぶ ― REST・ページング・429再試行の基本

PowerShellカテゴリを表すパンダのイラスト PowerShell

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft identity platformとGraphの公式資料を確認し、旧記事の「SDKより3〜5秒速い」という未検証値や固定シークレット例を修正しました。

検証ステータス:✅ Microsoft公式仕様確認済み

Microsoft Graph SDKを使わず、Invoke-RestMethodでREST APIを直接呼ぶ方法は有効です。ただし「SDK不要=必ず高速」ではありません。依存モジュールを減らせる一方、認証、ページング、再試行、エラー解析を自分で実装します。

Client Credentialsの最小構造

$body = @{
  client_id     = $ClientId
  scope         = 'https://graph.microsoft.com/.default'
  client_secret = $ClientSecret
  grant_type    = 'client_credentials'
}
$token = (Invoke-RestMethod -Method Post `
  -Uri "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token" `
  -Body $body).access_token

共有シークレットを使う場合も、コードやGitへ保存しません。長期運用では証明書やフェデレーション資格情報も比較します。

@odata.nextLinkを最後まで追う

一覧APIは1レスポンスで全件返るとは限りません。レスポンスに@odata.nextLinkがある限り、返されたURLをそのまま次の要求へ使います。ページサイズを固定値で推測しないことが重要です。

429はRetry-Afterに従う

Graphが429 Too Many Requestsを返したら、公式ガイダンスどおりRetry-Afterの秒数を待って再試行します。ヘッダーがない場合は指数バックオフを使います。

SDKとRESTの選び分け

観点 直接REST Graph SDK
依存モジュール 少ない 必要
ページング 自前実装 支援あり
再試行 自前実装 ハンドラーあり
APIの透明性 高い 抽象化される

起動時間や処理速度は環境で測り、固定の優劣として書きません。

公式情報

この記事の更新履歴

  • 2026-09-14 追加:RESTとSDKの役割比較、Retry-Afterの扱いを追加。
  • 2026-09-14 変更:「SDK不要=高速」という説明から、依存と実装責任のトレードオフへ変更。
  • 2026-09-14 削除:内部style_prompt、本文H1、固定ClientSecret、根拠のない3〜5秒短縮値を削除。

文書情報

記事タイトル
SDKなしでMicrosoft Graph APIをPowerShellから呼ぶ ― REST・ページング・429再試行の基本
作成日
更新日
Source URL
https://papanda925.com/?p=5606

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

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