M365関連 プログラム 技術

PowerShellのGraphAPIコマンドの接続時のやり方

以前、PowerShellのTeamsコマンドでの接続の仕方を書いていますが、今回はそのGraphAPI版となります

関連記事
PowerShellのTeamsコマンドの接続時のやり方 - ナストンのまとめ
PowerShellのTeamsコマンドの接続時のやり方 - ナストンのまとめ

この記事で使用しているMicrosoftTeamsモジュールのバージョンは【6.0.0】を使用してとなります 接続する際 ...

関連記事へ

名称バージョン
PowerShell7.5.1
Microsoft.Graph2.19.0

接続する際の種類

GraphAPIコマンドである『Connect-MgGraph』する際の方法をそれぞれ試してみます

引数に何も設定しない、または、インタラクティブ認証(デバイス認証)

Connect-MgGraph -NoWelcome
Connect-MgGraph -Scopes "User.Read", "Mail.ReadWrite" -NoWelcome # 実行する際に必要となる権限を選択してください

以下画像のようにサインイン画面が表示されるのでそこからアカウントを選択したりして接続します

GraphAPIを使用する際に必要となる権限については以下のMSドキュメントが参考になるかと思います

MSサイト
Microsoft Graph のアクセス許可のリファレンス  - Microsoft Graph | Microsoft Learn
Microsoft Graph のアクセス許可のリファレンス - Microsoft Graph | Microsoft Learn

Microsoft Graph は、アプリがアクセスするリソース (ユーザー、グループ、メールなど) を制御する詳細なア ...

MSサイトへ

アクセストークンを使用した接続

あらかじめ、ユーザー名等を使用して取得したアクセストークンを使用します

$ReqUserTokenBody = @{
    Grant_Type    = "password"
    username      = $userName
    password      = $userPass
    client_Id     = $ApplicationId
    Client_Secret = $ClientSecretValue
    Scope         = "Sites.ReadWrite.All" # Azureアプリに含まれていないとエラーが発生する
}

$TokenUserResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token" -Method POST -Body $ReqUserTokenBody
$accessToken = $TokenUserResponse.access_token
Connect-MgGraph -AccessToken ($accessToken | ConvertTo-SecureString -AsPlainText -Force) -NoWelcome

クライアントシークレットを使用した接続(アプリケーション認証)

先ほどのアクセストークンと同じような感じで使用できます

$TenantId = "your_tenant_id"
$ClientId = "your_client_id"
$ClientSecret = "your_client_secret"
$ClientSecretCredential = New-Object System.Management.Automation.PSCredential($ClientId, (ConvertTo-SecureString -String $ClientSecret -AsPlainText -Force))
Connect-MgGraph -TenantId $TenantId -ClientSecretCredential $ClientSecretCredential -NoWelcome

証明書系

証明書の名前または、証明書の拇印の値を使用して認証する方法となります

# 証明書の名前の場合
$CertificateName = "証明書の名前(Azure上だと説明欄に表示される内容)"
Connect-MgGraph -TenantId $TenantId -ClientId $ClientId -CertificateName $CertificateName -NoWelcome

# 証明書の拇印の場合
$CertificateThumbprint = "証明書の拇印の値"
Connect-MgGraph -TenantId $TenantId -ClientId $ClientId -CertificateThumbprint $CertificateThumbprint -NoWelcome

Azure上に証明書があるのにできない

Azureの対象アプリに対して証明書をアップしたのに、Connect-MgGraphコマンドでエラーが発生して原因がわからず困っていましたが、
以下のサイトの下の方にある「Accepted answer」によると実行するクライアント側にも同じ証明書をインストールしている必要があるとのことでした

参考サイト
Certificate with thumbprint  was not found in certificate store or has expired. - Microsoft Q&A
Certificate with thumbprint was not found in certificate store or has expired. - Microsoft Q&A

参考サイトへ

最後に

今回紹介したものはほんの一例となりますので、使用する環境にあった方法でGraphAPIに接続してみてください

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社|ADS Co., Ltd.
アドバンスド・ソリューション株式会社|ADS Co., Ltd.

Microsoft 365/SharePoint/Power Platform/Azure による DX コンサル・シス ...

サイトへ移動

PR

-M365関連, プログラム, 技術
-,