はじめに
既存の Azure AD 環境でエンタープライズアプリケーションが使われているけれど、いったいどのアプリ定義が生きているのかわからなかったので、割り当てられているユーザーがいる or いないで判断したいと思いました。GUIで1件1件見るのは時間の無駄なので、Powershellでひっぱてこれないかを調べてみました。
スニペット
Micorosoft の公式ドキュメントの QA サイトに都合の良いスクリプトが落ちていたので、少しだけ改変して使いました。
Connect-AzureAD $PathCsv = "%UserProfile%\Downloads\EnterpriseApplicationReport.csv" $ServicePrincipalList = Get-AzureADServicePrincipal -All $true foreach($servicePrincipal in $ServicePrincipalList){ Get-AzureADServiceAppRoleAssignment -ObjectId $ServicePrincipal.objectId | Select-Object ResourceDisplayName, ResourceId, PrincipalDisplayName, PrincipalType | Export-Csv -Encoding UTF8 -Path $PathCsv -NoTypeInformation -Append }
参考:How to export Users from Azure Enterprise Applications either from Portal/Powershell - Microsoft Q&A
上記コマンドを実行することで、以下情報が得られます。
- アプリケーション名
- リソースID
- 割当て済みユーザー/グループ名
- 割当てられたPrincipalのタイプ(=ユーザーなのか、グループなのか)
改変箇所①
出力先がCドライブの temp フォルダ配下に指定されていたので、Downloads に変更しました。
- 変更前:
$PathCsv = "C:\temp\EnterpriseApplicationReport.csv"
- 変更後:
$PathCsv = "%UserProfile%\Downloads\EnterpriseApplicationReport.csv"
改変箇所②
CSVエクスポート時の文字コードの指定がなかったので、UTF-8 と明示しました。
- 変更前:
Export-Csv -Path $PathCsv -NoTypeInformation -Append
- 変更後:
Export-Csv -Encoding UTF8 -Path $PathCsv -NoTypeInformation -Append
以上