【Microsoft Teams】Teamsで利用状況を取得する【PowerShell】

今回はTeamsのユーザー利用状況をPowerShellで取得する方法を案内します。
分析&レポートで取得できる情報をPowerShellで出力してみます。
その他、ユーザーの通話履歴も出力する方法を検討していきます。

事前準備 Microsoft Graphのアプリ登録

Microsoft Graphというのは、Microsoft 365 に存在するデータとアクセスするための入り口です。
これを設定することで様々なデータを取得することが可能となります。
アプリの登録方法に関しては、以下の記事でわかりやすくまとまっていましたので確認して実装してください。
Microsoft GraphAPIをつかってみよう。– 事前準備 編–

今回はTeamsから情報を取得する必要があるので、追加で権限を付与してあげる必要があります。
作成したアプリから「APIのアクセス許可」を確認してください。

「+アクセス許可の追加」-「Microsoft Graph」を選択します。

「アプリケーションの許可」で「TeamsActivity.Read.All」にチェックを入れます。
同様に「CallRecords.Read.All」にもチェックを入れておいてください。
これはMicrosoft Graphにそのデータにアクセスするための権限を付与するために必要です。

「<テナント名>に管理者の同意を与えます」をクリックして権限を付与します。

これで準備は整いました。

ソース

それではまず、ソースを確認してください。

説明

$clientid、$tenantName、$clientSecretは環境別に設定する必要があります。
随時変更してください。

$clientid→アプリの概要から確認

$tenantName→テナント名(hogehoge.onmicrosoft.com)

$clientSecret→作成したクライアントシークレット

コマンドを実施すると、コンソールに結果が出力されます。
見やすいようにカンマ区切りで表示してみます。(一部割愛)

正常に出力できました。

通話履歴を取得する

続いて通話履歴です。
既にスクリプトに記載してある$apiUrlをコメントアウトのコードと切り替えます。

$apiUrl = "https://graph.microsoft.com/v1.0/reports/getTeamsUserActivityUserDetail(period='D30')"
#$apiUrl = 'https://graph.microsoft.com/beta/communications/callRecords/{会議ID}'
↓
#$apiUrl = "https://graph.microsoft.com/v1.0/reports/getTeamsUserActivityUserDetail(period='D30')"
$apiUrl = 'https://graph.microsoft.com/beta/communications/callRecords/{会議ID}'

会議IDは通話ごとに確認しなければなりません。
ユーザーから対象のユーザーをクリックします。

通話履歴タブから、指定の通話の開始時刻をクリックします。

URLの[/meeting/]のあとに記載されているIDを確認して、スクリプトを修正してください。

例)
$apiUrl = 'https://graph.microsoft.com/beta/communications/callRecords/d13bdd50-2eb3-41b7-96e3-3e6859e809eb' 

スクリプトを再度実行すると、結果が表示されます。

@odata.context       : https://graph.microsoft.com/beta/$metadata#communications/callRecords/$entity
id                   : d13bdd50-2eb3-41b7-96e3-3e6859e809eb
version              : 1
type                 : groupCall
modalities           : {audio}
lastModifiedDateTime : 2020-07-29T09:02:53.9820623Z
startDateTime        : 2020-07-29T08:56:11.4033163Z
endDateTime          : 2020-07-29T08:56:45.9558107Z
joinWebUrl           : 
organizer            : @{acsUser=; spoolUser=; phone=; guest=; encrypted=; onPremises=; acsApplicationInstance=; spoolApplicationInstance=; applicationInstance=; application=; device=; user=}
participants         : {@{acsUser=; spoolUser=; phone=; guest=; encrypted=; onPremises=; acsApplicationInstance=; spoolApplicationInstance=; applicationInstance=; application=; device=; user=}}

終わりに

今回は以上です。
通話履歴の取得は少々手間なのですが、
もう少し調べて会議IDもスクリプトで取得できるように慣れば一覧をパッと取得できそうです。
こちらに関してはまた後日。。。

それではまた。