PowerShellを使ってメッセージセンターにある情報を取得します。この投稿では取得することをゴールとしています。取得した情報の活用方法を思いついたら別途投稿します。
作成したPowerShellをGitHubにアップロードしました。
作成したきっかけ
Twitterでふらりさんの素敵な投稿を見かけたからです。これを見て、仕組みを読み解くところからやってみたいと思いました。
Message Center の取得完了。#PowerAutomate で #MicrosoftGraph 使って Message Center 取得し、#SharePoint リストに格納
— ふらり@ROBO BOY (@flali_world) September 5, 2021
Teams に通知とアプリ化も考えよう pic.twitter.com/zoub0Y3RFR
使いかた
手順1: AzureADアプリを登録する
このスクリプトは「委任のアクセス許可」を使っています。
「委任のアクセス許可」を使ったAzureADアプリの登録手順については下記投稿を参照してください。
使用するアクセス許可は「委任のアクセス許可」-「Microsoft Graph」-「ServiceMessage.Read.All」です。
手順2: 作業端末に「MSAL.PS」モジュールをインストールする
「委任のアクセス許可」を簡単に使うためにモジュールをインストールします。こちらについても手順1と同じ投稿に記載していますので参照してください。
手順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
実行結果
参考情報
メッセージセンターやサービス正常性の情報をAPIから取得するために以前は「Office 365 サービス通信 API」が使われていました。2021年9月現在は、同情報がGraph APIで提供されるようになりました。「Office 365 サービス通信API」を使った情報提供は2021年12月17日で廃止になる予定のようなので、今後はGraph APIを使って実装する必要があります。
以上です。