個々の Workplace 365 アプリケーションのライセンスを割り当てられたユーザーを見つける
ライセンス Office 365 ユーザーの科学
Office 365 ライセンスの基本は、よく知られています。ユーザーは、Office 365 E3 や E5 などの複合プランのライセンスを通じてサービスにアクセスするか、Azure AD Premium P1 などの個々のサービスを提供します。Exchange オンラインやチームなどのサービスにアクセスするには、ユーザーが関連するライセンスを持っている必要があります。ユーザーに割り当てられたライセンスに関する情報は、Azure AD アカウントに格納されます。このコンテキストは、Microsoft 365 管理センターでは利用できないライセンスに関する質問への回答を開始する方法を理解するのに役立ちます (図 1)。

管理センターは、所有しているライセンス、割り当て済みおよび利用可能なライセンス、および割り当てられたライセンスを持つアカウントを教えてくれます。選択したライセンスを持つユーザーのリストを、レポート用の CSV ファイルにエクスポートしたり、Power BI にインポートして分析したりできます。ただし、複合ライセンスを通じて割り当てられたアプリケーションのライセンスをユーザーが持っている内容を調べる方法があります。
個別のアプリケーション ライセンス
チーム、Exchange オンライン、SharePoint オンラインの例を挙します。これらは、Office 365 E3 および E5 プランにバンドルされたコア サービスです。E3 または E5 ライセンスを持つすべてのユーザーがこれらのアプリケーションを使用できると仮定できますが、管理者は個々のユーザー アカウントからアプリケーションのサービス プランを削除できるため、この機能は当てはまりません (サービス プランは、プランにバンドルされている特定のアプリケーションのライセンスであり、サービス プランを購入することはできません)。図 2 に示す例を見てみましょう。ユーザーは Office 365 E3 ライセンスを持っていますが、予約、フォーム、および Kaizala のサービス プランが削除されました。

組織では、アプリケーションを展開する準備ができるまで、個々のサービス プランをユーザーから削除する方法が比較的一般的です。たとえば、Exchange、SharePoint、OneDrive for Business をすぐに使用するが、ローカル サポートが準備が整い、ユーザー トレーニングが利用可能になるまで、Office 365 E3 または E5 にバンドルされているチーム、フォーム、ストリーム、およびその他のアプリケーションへのユーザー アクセスをブロックする場合があります。
PowerShell を使用したライセンス情報へのアクセス
管理センターは個々のアプリケーションのサービスプランのレポートをサポートしていませんが、いくつかの簡単なPowerShellでこれを行うことは可能です。重要なのは、Azure AD アカウントからライセンス情報を取得する方法を見つけ出す方法です。
ライセンス情報は、 割り当てられたプラン のプロパティを Azure AD アカウントのプロパティ。このプロパティを調べると、ライセンスがアカウントに追加および削除されると、割り当てと削除が一覧で表示されます。
(Get-AzureADUser -ObjectId Andy.Ruth@office365itpros.com).AssignedPlans AssignedTimestamp CapabilityStatus Service ServicePlanId ----------------- ---------------- ------- ------------- 28/01/2021 22:11:05 Deleted OfficeForms 2789c901-c14e-48ab-a76a-be334d9d793a 28/01/2021 22:11:05 Deleted MicrosoftKaizala aebd3021-9f8f-4bf8-bbe3-0ed2f4f047a1 28/01/2021 22:11:05 Enabled CRM 95b76021-6a53-4741-ab8b-1d1f3d66a95a
ServicePlanId は、プランの一意識別子 (GUID) を格納するため、重要な情報です。マイクロソフトは、 アプリケーション サービス プラン識別子のオンライン リスト 参考にしてください。覚えておくべきことは、同じサービス プラン識別子が常に使用されるということです。たとえば、2789c901-c14e-48ab-a76a-be334d9d793aは常にフォームプランE3(Office 365 E3に含まれるフォームアプリケーションのライセンス)です。
これを確認するために、 を取得します。 を使用して、テナント内で認識されているライセンスのセットを取得します。
$Licenses = (Get-AzureADSubscribedSku) $Licenses | Select -Property SkuPartNumber, ConsumedUnits -ExpandProperty PrepaidUnits | Format-Table SkuPartNumber ConsumedUnits Enabled Suspended Warning ------------- ------------- ------- --------- ------- STREAM 4 10000 0 0 EMSPREMIUM 5 5 0 0 ENTERPRISEPACK 22 25 0 0 FLOW_FREE 3 10000 0 0 POWER_BI_STANDARD 5 1000000 0 0 ENTERPRISEPREMIUM_NOPSTNCONF 5 5 0 0 TEAMS_EXPLORATORY 0 100 0 0 SMB_APPS 2 3 0 0 RIGHTSMANAGEMENT_ADHOC 3 50000 0 0
オンライン ドキュメントでは、Office 365 E3 SKU の名前が ENTERPRISEPACK であることを示しています。これは、私たちのリストのライセンス番号3ですので、私たちは、含まれているものを見つけるために、このオブジェクトを見ることができます。予想どおり、FORMS_PLAN_E3のサービス プラン識別子は 2789c901-c14e-48ab-a76a-be334d9d793a です。
$Licenses[2].ServicePlans | Format-Table ServicePlanName, ServicePlanId ServicePlanName ServicePlanId --------------- ------------- POWER_VIRTUAL_AGENTS_O365_P2 041fe683-03e4-45b6-b1af-c0cdc516daee CDS_O365_P2 95b76021-6a53-4741-ab8b-1d1f3d66a95a PROJECT_O365_P2 31b4e2fc-4cd6-4e7d-9c1b-41407303bd66 DYN365_CDS_O365_P2 4ff01e01-1ba7-4d71-8cf8-ce96c3bbcf14 MICROSOFTBOOKINGS 199a5c09-e0ca-4e37-8f7c-b05d533e1ea2 KAIZALA_O365_P3 aebd3021-9f8f-4bf8-bbe3-0ed2f4f047a1 MICROSOFT_SEARCH 94065c59-bc8e-4e8b-89e5-5138d471eaff WHITEBOARD_PLAN2 94a54592-cd8b-425e-87c6-97868b000b91 MIP_S_CLP1 5136a095-5cf0-4aff-bec3-e84448b38ea5 MYANALYTICS_P2 33c4f319-9bdd-48d6-9c4d-410b750a4a5a BPOS_S_TODO_2 c87f142c-d1e9-4363-8630-aaea9c4d9ae5 FORMS_PLAN_E3 2789c901-c14e-48ab-a76a-be334d9d793a STREAM_O365_E3 9e700747-8b1d-45e5-ab8d-ef187ceec156 Deskless 8c7d2df8-86f0-4902-b2ed-a0458298f3b3 FLOW_O365_P2 76846ad7-7776-4c40-a281-a386362dd1b9 POWERAPPS_O365_P2 c68f8d98-5534-41c8-bf36-22fa496fa792 TEAMS1 57ff2da0-773e-42df-b2af-ffb7a2317929 PROJECTWORKMANAGEMENT b737dad2-2f6c-4c65-90e3-ca563267e8b9 SWAY a23b959c-7ce8-4e57-9140-b90eb88a9e97 INTUNE_O365 882e1d05-acd1-4ccb-8708-6ee03664b117 YAMMER_ENTERPRISE 7547a3fe-08ee-4ccb-b430-5077c5041653 RMS_S_ENTERPRISE bea4c11e-220a-4e6d-8eb8-8ea15d019f90 OFFICESUBSCRIPTION 43de0ff5-c92c-492b-9116-175376d08c38 MCOSTANDARD 0feaeb32-d00e-4d66-bd5a-43b5b83db82c SHAREPOINTWAC e95bec33-7c88-4a70-8e19-b10bd9d0c014 SHAREPOINTENTERPRISE 5dbe027f-2339-4123-9542-606e4d348a72 EXCHANGE_S_ENTERPRISE efb87545-963c-4e0d-99df-69c6916d9eb0
アプリケーションに対してライセンスされたアカウントのレポート
サービス プラン識別子のしくみと値の検索方法がわかったので、この知識を使用して、Azure AD ユーザー アカウントを調べ、アプリケーションのライセンス データを検索するスクリプトを作成できます。
誰もが GUID の入力を好むわけではないので、クエリにアプリケーション名を使用できるようにすることで簡単にします。このコードは、サービス プランの識別子と名前のハッシュ テーブルを作成し (必要に応じて追加して自由に)、Azure AD ユーザー アカウントの詳細を取得します。ハッシュ テーブルに対する応答を確認して検証するアプリケーションを入力するようユーザーに依頼します。最後に、一連の Azure AD アカウントをループして、ライセンスが割り当てられたセットに含まれるかどうかを確認し、詳細を報告します。コードは次のとおりです(以下のコード GitHub からダウンロードする):
$Plans = @{} $Plans.Add(“199a5c09-e0ca-4e37-8f7c-b05d533e1ea2”, “Bookings”) $Plans.Add(“efb87545-963c-4e0d-99df-69c6916d9eb0”, “Exchange Online”) $Plans.Add(“5dbe027f-2339-4123-9542-606e4d348a72”, “SharePoint Online”) $Plans.Add(“7547a3fe-08ee-4ccb-b430-5077c5041653”, “Yammer”) $Plans.Add(“882e1d05-acd1-4ccb-8708-6ee03664b117”, “Intune”) $Plans.Add(“57ff2da0-773e-42df-b2af-ffb7a2317929”, “Teams”) $Plans.Add(“2789c901-c14e-48ab-a76a-be334d9d793a”, “Forms”) $Plans.Add(“9e700747-8b1d-45e5-ab8d-ef187ceec156”, “Stream”) $Plans.Add(“b737dad2-2f6c-4c65-90e3-ca563267e8b9”, “Planner”) Write-Host “Finding Azure AD Account Information” $Users = Get-AzureADUser -All $True -Filter "Usertype eq 'Member'" CLS $Product = Read-Host "Enter the Office 365 application for a license check" if (!($Plans.ContainsValue($Product))) { # Not found Write-Host “Can’t find” $Product “in our set of application SKUs”; break } Foreach ($Key in $Plans.Keys) { # Lookup hash table to find product SKU If ($Plans[$Key] -eq $Product) { $PlanId = $Key } } $PlanUsers = [System.Collections.Generic.List[Object]]::new() ForEach ($User in $Users) { If ($PlanId -in $User.AssignedPlans.ServicePlanId) { $Status = ($User.AssignedPlans | ? {$_.ServicePlanId -eq $PlanId} | Select -ExpandProperty CapabilityStatus ) $ReportLine = [PSCustomObject] @{ User = $User.DisplayName UPN = $User.UserPrincipalName Department = $User.Department Country = $User.Country SKU = $PlanId Product = $Product Status = $Status } $PlanUsers.Add($ReportLine) } } Write-Host "Total Accounts scanned:" $PlanUsers.Count $DisabledCount = $PlanUsers | ?{$_.Status -eq "Deleted"} $EnabledCount = $PlanUsers | ? {$_.Status -eq "Enabled"} Write-Host (“{0} is enabled for {1} accounts and disabled for {2} accounts” -f $Product, $EnabledCount.Count, $DisabledCount.Count) $PlanUsers | Sort User | Out-GridView
グラフの変更ネイティブ
また、 ユーザーグラフ API 次のような呼び出しを実行して、Azure AD アカウントのライセンス情報を取得します。
https://graph.microsoft.com/v1.0/users?$filter=userType eq 'Member'&$select=id, displayName, licenseassignmentstates, assignedplans
チェックするコード 割り当てられたプラン 製品識別子のデータは同じです。グラフは通常 PowerShell コマンドレットよりも高速ですが、この場合は 1 回の呼び出しのみが必要であり、速度の差はごくわずかです。
これまでと同様に、グラフを使用してデータをフェッチする場合は、呼び出しの構文をテストし、 グラフエクスプローラ ツールは良いことです。図 3 は、Graph に対してクエリを実行してユーザー ライセンス データを返した結果を示しています。

異なるプランでのライセンスの処理
スクリプトは特定のサービス プラン識別子を検索するため、ライセンスを受けたアプリケーションのすべてのインスタンスを検索します。言い換えれば、Office 365 E3 と E5 の両方で、EXCHANGE_S_ENTERPRISE (efb87545-963c-4e0d-99df-69c6916d9eb0) として含まれる Exchange Online などのアプリケーションを検索すると、レポートには両方のプランで Exchange で有効になっているアカウントが一覧表示されます。2 つのプランを区別する場合は、 割り当てられたライセンス プランの識別子の各アカウントのプロパティ。たとえば、見て マイクロソフトのリファレンスリストを見つける:
- 6fd2c87f-b296-42f0-b197-1e91e994b900 は Office 365 E3 の識別子です。
- c7df2760-2c81-4ef7-b578-5b5392b571df は Office 365 E5 用です。
- 26d45bd9-adf1-46cd-a9e1-51e9a5524128 は、オーディオ会議なしの Office 365 E5 用です。
GitHub から利用できるスクリプトには、ライセンス SKU の名前を出力するコードが含まれています。
ライセンスデータの出力
レポートの情報は、CSV ファイルに保存するか、オンラインで表示できます。図 4 は、スクリプトの結果を通して表示した結果を示しています。 アウトグリッドビュー コマンドレット。図 1 の Forms ライセンスを削除したユーザーが正確に報告されていることがわかります。

個々のライセンスの詳細について Azure AD に問い合わす必要はあまりないかもしれませんが、(多数のユーザーに対してアプリケーションを有効にする準備をしている場合)、管理センターの GUI を使用するよりも PowerShell で情報を取得する方がはるかに高速です。
ライセンスのしくみに関する詳細については、 IT 担当者向け Office 365 電子書籍。
関連
ディスカッション
コメント一覧
まだ、コメントがありません