AzureADのユーザーに割り当てられているライセンス情報を取得するPowershellを調べたので備忘録です。
※AzureAD用コマンドレッドのバージョンが古いため、Graph用のを追加で調べたいところです。

全てのユーザーに割り当てられているライセンス情報を取得するPowershellコマンド

Get-MsolUser -All | Select-Object DisplayName, UserPrincipalName, @{L="Licenses"; E={($_ | Select-Object -ExpandProperty Licenses).AccountSkuId -join ";"}}

CSVでエクスポートする場合はパイプでエクスポートする構文を追加します。

Get-MsolUser -All | Select-Object DisplayName, UserPrincipalName, @{L="Licenses"; E={($_ | Select-Object -ExpandProperty Licenses).AccountSkuId -join ";"}} | Export-CSV <ファイルパス/ファイル名.csv> -NotypeInformation -Encoding Default -Append

また特定のライセンスが割り当てられているユーザーのみ出力するPowershell コマンドも調べました。

太字の部分を絞り込みたいライセンス名にします。(ライセンス名は出力すればわかります。)

Get-MsolUser -All | where {$_.Licenses.AccountSkuID -contains '<ライセンス名>'} | Select-Object DisplayName, UserPrincipalName, @{L="Licenses"; E={($_ | Select-Object -ExpandProperty Licenses).AccountSkuId -join ";"}}

CSVでエクスポートする場合は、こちらもパイプでエクスポートする構文を追加します。

Get-MsolUser -All | where {$_.Licenses.AccountSkuID -contains '<ライセンス名>'} | Select-Object DisplayName, UserPrincipalName, @{L="Licenses"; E={($_ | Select-Object -ExpandProperty Licenses).AccountSkuId -join ";"}} | Export-CSV <ファイルパス/ファイル名.csv> -NotypeInformation -Encoding Default -Append

Get-MsolUserではなく、Get-AzureADUserと組み合わせたパターンも調べました。

Get-AzureADUser -All $True |Where-Object {$_.AssignedLicenses.SkuId -match'<ライセンスID'}|Get-MsolUser | Select-Object DisplayName, UserPrincipalName, @{L="Licenses"; E={($_ | Select-Object -ExpandProperty Licenses).AccountSkuId -join ";"}}

Get-AzureADUserでは「AssignedLicenses」プロパティが「SkuId」とライセンス名がわからない形式になってしまうので、Get-MsolUserの「Licenses」プロパティの値と突合してライセンス名の値を持ってくる必要があるということでしょうか。少しややこしいですね。

2023/02/07追加

MSOnlineのPowerShell、AzureAD PowerShellは2023/03/31に使えなくなる(参照用になる)そうで、
Microsoft Graph APIを使う必要がありますね。
Microsoft Graph版のライセンス確認方法もわかったら記事にしたいと思います。