この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft Learnの現行ドキュメントを確認し、旧版の認証例を修正しました。検証ステータス:📘 Microsoft公式情報確認済み/テナント実機未検証
バックグラウンド処理でMicrosoft Graphへ接続する場合は、ユーザーの対話ログインではなくapp-only認証を使えます。Microsoft Graph PowerShell SDKでは、証明書やクライアントシークレットを使った接続が用意されています。
長期運用では証明書を第一候補にする
証明書をアプリ登録へ登録し、実行端末の証明書ストアから秘密鍵を利用します。秘密文字列をスクリプトへ埋め込む必要がありません。
$TenantId = 'YOUR_TENANT_ID'
$ClientId = 'YOUR_APP_ID'
$Thumbprint = 'YOUR_CERT_THUMBPRINT'
Connect-MgGraph `
-TenantId $TenantId `
-ClientId $ClientId `
-CertificateThumbprint $Thumbprint `
-NoWelcome
Get-MgContext | Select-Object TenantId, ClientId, AuthType
Get-MgContext の AuthType が AppOnly になっていることを確認します。
クライアントシークレットを使う場合
現行のGraph PowerShell SDKでは -ClientSecretCredential を使用します。旧記事の -ClientSecret 例は現行の接続例と一致しないため削除しました。
$ClientId = 'YOUR_APP_ID'
$TenantId = 'YOUR_TENANT_ID'
$Secret = Read-Host 'Client secret' -AsSecureString
$Credential = [pscredential]::new($ClientId, $Secret)
Connect-MgGraph `
-TenantId $TenantId `
-ClientSecretCredential $Credential `
-NoWelcome
運用ではシークレットをソースコードやGitへ保存せず、秘密情報ストアから取得します。Azure上で実行する処理では、要件に合えばマネージドIDやフェデレーションも検討します。
Graph権限は最小限にする
app-onlyではアプリケーション許可をアプリ登録へ付与し、管理者同意が必要になる場合があります。必要なAPIだけに限定し、広い Directory.ReadWrite.All などを安易に付与しないことが重要です。
並列化は認証と分けて考える
Graph APIの処理速度は認証方式だけで決まりません。並列化するとスロットリングを受けることがあるため、「5〜8倍」のような固定倍率は期待値にしないでください。ページング、要求数、429応答とRetry-Afterを見ながら設計します。
公式情報・一次情報
- Microsoft Graph ― PowerShell app-only authentication
- Microsoft Graph PowerShell authentication commands
この記事の更新履歴
- 2026-09-13 追加:証明書認証、ClientSecretCredential、最小権限、認証確認手順を追加。
- 2026-09-13 変更:現行Microsoft Graph PowerShell SDKの接続方法に合わせてコード例を変更。
- 2026-09-13 削除:内部style_prompt、本文H1、旧
-ClientSecret例、根拠のない性能倍率を削除。

