おれさまラボ

実際に手を動かして理解を深めるブログ。

エンタープライズアプリケーションに割り当てられたユーザーの一覧を出力する

はじめに

既存の 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

以上