Azure AD ユーザー アカウントが Microsoft 365 ライセンスを受け取るタイミングを確認する方法

Azure AD ユーザー アカウントが Microsoft 365 ライセンスを受け取るタイミングを確認する方法 [ad_1]

ライセンス レポートに日付がありません

私は最近、説明する Practical365.com 記事を公開しました Office 365 テナントのライセンス レポートを作成する方法 PowerShell 用のマイクロソフト グラフ SDK のコマンドレットを使用する。

読者は尋ねました: “特定のライセンス (この場合は E3 セキュリティおよびモビリティ ライセンス) がすべてのユーザーに追加された時期を確認しようとしています。."

ライセンスの日付なし

それは興味深い質問です。記述したように、スクリプトは、ユーザー アカウントに割り当てられたライセンスとサービスプランに基づいてレポートを生成します。ただし、エンタープライズ セキュリティやモビリティ E3 (EMS E3) などの製品のライセンスがユーザーに割り当てられた場合は、何も教えてくれません。これは、Azure AD では、ユーザー アカウントに対して保持されている製品ライセンス情報の割り当て日が記録されないためです。代わりに、アカウントのライセンス情報は、SKU で無効になっているサービス プランを含む SKU 識別子の表として表示されます。

$User,AssignedLicenses

DisabledPlans                          SkuId
-------------                          -----
{bea4c11e-220a-4e6d-8eb8-8ea15d019f90} b05e124f-c7cc-45a0-a6aa-8cf78c946968
{}                                     8c4ce438-32a7-4ac5-91a6-e22ae08d9c8b
{}                                     4016f256-b063-4864-816e-d818aad600c9
{a23b959c-7ce8-4e57-9140-b90eb88a9e97} 6fd2c87f-b296-42f0-b197-1e91e994b900

ただし、日付情報は、アカウントのサービスプラン情報に含まれます。

$User.AssignedPlans

AssignedDateTime    CapabilityStatus Service                       ServicePlanId
----------------    ---------------- -------                       -------------
09/11/2021 10:33:37 Enabled          AzureAdvancedThreatAnalytics  14ab5db5-e6c4-4b20-b4bc-13e36fd2227f
09/11/2021 10:33:37 Enabled          AADPremiumService             eec0eb4f-6444-4f95-aba0-50c24d67f998
09/11/2021 10:33:37 Enabled          RMSOnline                     5689bec4-755d-4753-8b61-40975025187c
09/11/2021 10:33:37 Enabled          SCO                           c1ec4a95-1f05-45b3-a911-aa3fa01094f5
09/11/2021 10:33:37 Enabled          AADPremiumService             41781fb2-bc02-4b7c-bd55-b576c07bb09d
09/11/2021 10:33:37 Enabled          MultiFactorService            8a256a2b-b617-496d-b51b-e76466e88db0
09/11/2021 10:33:37 Enabled          RMSOnline                     bea4c11e-220a-4e6d-8eb8-8ea15d019f90
09/11/2021 10:33:37 Enabled          RMSOnline                     6c57d4b6-3b23-47a5-9bc9-69f17b4947b3
09/11/2021 10:33:37 Enabled          Adallom                       2e2ddb96-6af9-4b1d-a3f0-d6ecfd22edb2

サービス計画割当の日付の確認

サービスプランで日付情報が利用可能な場合、ユーザーアカウントのサービスプラン情報を照合して、製品 (SKU) に属するサービスプランの割り当てを検索することができます。を見て ライセンス ページの製品名とサービス プラン識別子 EMS E3 (SKU 識別子 efccb6f7-5641-4e0e-bd10-b4976e1bf68e) に含まれるサービスプランのリストを見つけます。サービスプランのセットは次のとおりです。

  • Azure アクティブ ディレクトリ プレミアム P1: 41781fb2-bc02-4b7c-bd55-b576c07bb09d
  • Azure 情報保護プレミアム P1: 6c57d4b6-3b23-47a5-9bc9-69f17b4947b3
  • クラウド アプリケーションのセキュリティ検出: 932ad362-64a8-4783-9106-97849a1a30b9
  • エクスチェンジ財団: 113feb6c-3fe4-4440-bddc-54d774bf0318
  • マイクロソフト Azure アクティブ ディレクトリの権利: bea4c11e-220a-4e6d-8eb8-8ea15d019f90
  • マイクロソフト Azure 多要素認証: 8a256a2b-b617-496d-b51b-e76466e88db0
  • マイクロソフトインチューン: c1ec4a95-1f05-45b3-a911-aa3fa01094f5

理論は、SKU でサービスプランの 1 つに関する情報を取得し、割り当てられた日付を取得して報告するために、EMS E3 が割り当てられたアカウントをチェックできる必要があります。私はテナントにEMS E3を持っていませんが、EMS E5を持っています。したがって、私はこのPowerShellコードを実行して理論をチェックしました:

# Check the date when a service plan belonging to a product like EMS E3 is assigned to an account
$EMSE3 = "efccb6f7-5641-4e0e-bd10-b4976e1bf68e" # Product SKU identifier for Enterprise Mobility and Security E3
$EMSE5 = "b05e124f-c7cc-45a0-a6aa-8cf78c946968" # Product SKU identifier for Enterprise Mobility and Security E5
$TestSP = "41781fb2-bc02-4b7c-bd55-b576c07bb09d" # Azure Active Directory Premium P1
$Report = [System.Collections.Generic.List[Object]]::new()
# Find tenant accounts
Write-Host "Finding Azure AD accounts..."
[Array]$Users = Get-MgUser -Filter "UserType eq 'Member'" -All | Sort DisplayName
ForEach ($User in $Users) {
  ForEach ($SP in $User.AssignedPlans) {
   If (($User.AssignedLicenses.SkuId -contains $EMSE5) -and ($SP.ServicePlanId -eq $TestSP -and $SP.CapabilityStatus -eq "Enabled")) {
        $ReportLine = [PSCustomObject][Ordered]@{  
          User            = $User.DisplayName
          UPN             = $User.UserPrincipalName
          ServicePlan     = $SP.Service
          ServicePlanId   = $SP.ServicePlanId 
          Assigned        = Get-Date($SP.AssignedDateTime) -format g
         }
        $Report.Add($ReportLine)
    } #End if
  } #End ForEach Service plans
} #End ForEach Users

いくつかの変数を定義した後、コードは ゲット・Mgユーザー を使用して、テナント内の Azure AD アカウントを検索します (私は この記事で説明するスクリプト 基礎として;見る PowerShell 用のグラフ SDK の詳細については、この資料を参照してください).次に、割り当てられたプランをチェックし、目的のプランが適切な製品に属し、有効になっている場合は、それを報告します。レポートの各行は次のようになります。

User          : Kim Akers
UPN           : Kim.Akers@office365itpros.com
ServicePlan   : AADPremiumService
ServicePlanId : 41781fb2-bc02-4b7c-bd55-b576c07bb09d
Assigned      : 11/11/2017 16:52

これは、製品ライセンスがユーザーアカウントに割り当てられるときの発見の問題に対する迅速かつ汚い答えです。マイクロソフトが問題を改善している間、それは記入するのに役立つかもしれません。

AA 報告:ヴァシル・ミチェフ、マイクロソフトは最近追加しました ライセンス割り当て状態 をグラフ API に追加します。これは PowerShell ではまだ使用できませんが、グラフを使用して日付情報を取得できます。このスニペットでは、ユーザー アカウントを検索し、EMS E5 の割り当て状態を調べて、ライセンスがいつ割り当てられたのか調べます。このコードでは、既に r を使用していることを前提としています。グラフ API を操作するためのアクセス トークンを認証および取得するアプリ.必要な場合があることを覚えておいてください。 ページネーションを使用する を使用して、テナントで利用可能なユーザー データのすべてのページを取得します。とにかく、ここで私の素早く汚いコードがポイントを証明します:

# Use the Graph API to check license assignment states
Write-Host "Fetching user information from Azure AD..."
$Uri = "https://graph.microsoft.com/v1.0/users?&`$filter=userType eq 'Member'"
[Array]$Users = (Invoke-RestMethod -Uri $Uri -Headers $Headers -Method Get -ContentType "application/json")
$Users = $Users.Value

Write-Host “Processing users…”
ForEach ($User in $Users) {
    $Uri = "https://graph.microsoft.com/beta/users/" + $User.UserPrincipalName + "?`$select=licenseAssignmentStates"
    [Array]$Assignments = Get-GraphData -Uri $Uri -AccessToken $Token
    ForEach ($License in $Assignments.LicenseAssignmentStates) {
        $LicenseUpdateDate = $Null
        If ($License.SkuId -eq $EMSE5 -and $License.State -eq "Active") {
           If ([string]::IsNullOrWhiteSpace(($License.lastUpdatedDateTime)) -eq $False ) {
              $LicenseUpdateDate = Get-Date($License.lastUpdatedDateTime) -format g }
           Else {
              $LicenseUpdateDate = "Not set" }
           Write-Host ("Last update for EMS for {0} on {1}" -f $User.DisplayName, $LicenseUpdateDate) }
    } # End ForEach License
} # End ForEach User

Last update for EMS for Tony Redmond on 15/07/2021 15:28
Last update for EMS for Andy Ruth (Director) on Not set
Last update for EMS for Kim Akers on 26/10/2021 16:58
Last update for EMS for Jack Hones on Not set
Last update for EMS for Oisin Johnston on 03/10/2020 13:18

Microsoft は、アカウントに対して行われた最後のライセンス変更を使用してこれらの値を設定するため、このメソッドを使用して取得される日付は、サービス プランから取得される値とは異なります。ただし、将来的には、PowerShell へのアクセスが可能な場合に変更をキャプチャするため、日付の精度と使用性が高くなります。

監査データなし

Office 365 監査ログは、管理者がアカウントのライセンスを更新するときに"ユーザー ライセンスの変更" 監査レコードをキャプチャします。ただし、監査レコードには、追加、変更、または削除されたライセンスの詳細は含みません。Azure AD チームは、ライセンス更新に関する監査情報を取得する優れた作業を行うことができます。私は彼らがそれを聞いて喜んでいると確信しています。


ちゃんに追いつくマイクロソフト 365 エコシステムの世界を購読して、 IT 担当者向け Office 365 電子書籍。毎月の更新は、加入者が新しい開発について学ぶことを意味します。

[ad_2]

未分類

Posted by admin