Microsoft GraphをPowerShellから直接呼ぶ ― SDKなし構成で必要な再試行とページング

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

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft Graphの認証・スロットリング公式資料を確認し、旧記事の性能値と「SDKなしなら高速」という単純化を修正しました。

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

Microsoft GraphはHTTP APIなので、PowerShellのInvoke-RestMethodから直接呼べます。公式SDKを使わない構成は軽量ですが、その代わりにページング、再試行、認証、エラー処理を自分で実装する必要があります。

REST直呼びが向くケース

  • 呼ぶAPIが少なく、処理内容が固定されている。
  • 実行環境へ追加モジュールを入れたくない。
  • HTTP要求とレスポンスを自分で制御したい。

多数のGraph機能を横断するツールや、認証・型・再試行をまとめて扱いたい場合は、公式SDKの方が保守しやすいこともあります。

共通処理を関数へまとめる

function Invoke-GraphGet {
    param(
        [string]$Uri,
        [string]$AccessToken
    )

    $headers = @{ Authorization = "Bearer $AccessToken" }
    Invoke-RestMethod -Method Get -Uri $Uri -Headers $headers -ErrorAction Stop
}

実運用ではこの共通関数へ、429時の待機、5xx時の限定的な再試行、ログ、タイムアウトなどを追加します。

ページングを忘れない

一覧APIではレスポンスの@odata.nextLinkを最後までたどる必要があります。$topを大きくしただけで全件取得できるとは限りません。

429ではRetry-Afterを使う

Microsoft Graphの公式ガイダンスでは、HTTP 429が返った場合はRetry-Afterヘッダーに従って待機し、再試行します。高い並列度で429を増やすより、必要なAPI呼び出し自体を減らせないか先に確認します。

性能は環境ごとに測る

SDKの読み込み時間、ネットワーク遅延、Graph側の応答、テナント規模などで結果は変わります。「3.5倍〜5倍高速」などの固定値は一般化できません。Measure-Commandで自分の処理を測り、成功率と429件数も合わせて比較します。

公式情報

この記事の更新履歴

  • 2026-09-14 追加:REST直呼びが向く条件、共通関数、ページングとRetry-Afterを追加。
  • 2026-09-14 変更:SDK排除を目的化せず、保守性との比較を含む構成へ変更。
  • 2026-09-14 削除:内部執筆指示、本文H1、3.5〜5倍高速化やメモリ削減の未検証値を削除。

文書情報

記事タイトル
Microsoft GraphをPowerShellから直接呼ぶ ― SDKなし構成で必要な再試行とページング
作成日
更新日
Source URL
https://papanda925.com/?p=5767

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

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