PowerShellを使ってメッセージセンターにある情報を取得します。この投稿では取得することをゴールとしています。取得した情報の活用方法を思いついたら別途投稿します。
作成したPowerShellをGitHubにアップロードしました。
github.com
作成したきっかけ
Twitterでふらりさんの素敵な投稿を見かけたからです。これを見て、仕組みを読み解くところからやってみたいと思いました。
Message Center の取得完了。#PowerAutomate で #MicrosoftGraph 使って Message Center 取得し、#SharePoint リストに格納
— ふらり@ROBO BOY (@flali_world) 2021年9月5日
Teams に通知とアプリ化も考えよう pic.twitter.com/zoub0Y3RFR
使いかた
手順1: AzureADアプリを登録する
このスクリプトは「委任のアクセス許可」を使っています。
「委任のアクセス許可」を使ったAzureADアプリの登録手順については下記投稿を参照してください。
qiita.com
使用するアクセス許可は「委任のアクセス許可」-「Microsoft Graph」-「ServiceMessage.Read.All」です。
手順2: 作業端末に「MSAL.PS」モジュールをインストールする
「委任のアクセス許可」を簡単に使うためにモジュールをインストールします。こちらについても手順1と同じ投稿に記載していますので参照してください。
qiita.com
手順3:スクリプトの実行
以下のスクリプトを実行してください。グリッドビューがポップアップ開いて取得結果が表示されます。「変数の設定」に記載している各IDは手順1で取得したIDに置き換えてください。
メッセージセンターの情報を取得するスクリプト
#------------------------------------------------- #変数の設定 #------------------------------------------------- #テナントのID $tenantID = "XXX-XXX-XXX-XXX-XXX" #AzureADアプリ $clientID = "XXX-XXX-XXX-XXX-XXX" #MSALのリダイレクトURL $MSALRedirectUri = "msalXXX-XXX-XXX-XXX-XXX://auth" #------------------------------------------------- #認証情報を取得 #------------------------------------------------- #トークンを取得 $token = Get-MsalToken ` -TenantId $tenantID ` -ClientId $clientID ` -RedirectUri $MSALRedirectUri ` -Interactive $headerParams = @{ 'Authorization' = "bearer $($token.AccessToken)" } #------------------------------------------------- #メッセージセンターの情報を取得 #------------------------------------------------- $url = "https://graph.microsoft.com/v1.0/admin/serviceAnnouncement/messages" $contentType = "application/json" $responseFromAPI = Invoke-RestMethod ` -Method GET ` -uri $url ` -Headers $headerParams ` -ContentType $contentType $result = @() $result += $responseFromAPI.value $pages = $responseFromAPI.'@odata.nextLink' while([string]::IsNullOrEmpty($pages) -eq $false) { $addtional = Invoke-RestMethod ` -Method GET ` -uri $pages ` -Headers $headerParams ` -ContentType $contentType $result += $addtional.value $pages = $addtional."@odata.nextLink" } $result | Out-GridView
実行結果
グリッドビューにこのように表示されます。