通过PowerShell获取Azure AD应用完整API权限并显示对应API名称
为Azure应用权限脚本添加API名称显示功能
原脚本已能导出Azure应用的权限类型与权限名称,现在新增API名称字段,具体修改后的脚本如下:
# 连接Azure AD(需提前安装AzureAD模块并执行此命令) # Connect-AzureAD $Apps = Get-AzureADApplication -All $true $ServicePrincipals = Get-AzureADServicePrincipal -All $true $export_application_permission = "C:\temp\application_perms.csv" $export_delegated_permission = "C:\temp\delegated_perms.csv" $export_all_permission = "C:\temp\all_perms.csv" # 构建包含API名称的权限映射表,关联权限ID、权限值和所属API名称 $PermissionsList = $ServicePrincipals | ForEach-Object { $apiName = $_.DisplayName $_.Oauth2Permissions | Select-Object Id, Value, @{Name='API Name'; Expression={$apiName}} } $RolesList = $ServicePrincipals | ForEach-Object { $apiName = $_.DisplayName $_.AppRoles | Select-Object Id, Value, @{Name='API Name'; Expression={$apiName}} } $Data = Foreach ($App in $Apps) { foreach ($Access in $App.RequiredResourceAccess) { # 通过ResourceAppId匹配对应的API服务主体,获取API名称作为备选 $fallbackApiName = ($ServicePrincipals | Where-Object {$_.AppId -eq $Access.ResourceAppId}).DisplayName foreach ($Permission in $Access.ResourceAccess) { $permissionDetails = $null switch ($Permission.Type) { 'Scope' { $permissionDetails = $PermissionsList | Where-Object Id -eq $Permission.Id break } 'Role' { $permissionDetails = $RolesList | Where-Object Id -eq $Permission.Id break } } $PermissionName = $permissionDetails.Value ?? $Permission.Id $apiName = $permissionDetails.'API Name' ?? $fallbackApiName [PSCustomObject]@{ '应用显示名称' = $App.DisplayName 'API名称' = $apiName '权限类型' = $Permission.Type '权限名称' = $PermissionName } } } } $Data | Where-Object '权限类型' -eq Role | Export-Csv -Path $export_application_permission -NoTypeInformation -Encoding UTF8 $Data | Where-Object '权限类型' -eq Scope | Export-Csv -Path $export_delegated_permission -NoTypeInformation -Encoding UTF8 $Data | Export-Csv -Path $export_all_permission -NoTypeInformation -Encoding UTF8
关键修改点:
- 重构权限映射表:为
$PermissionsList和$RolesList新增API Name字段,直接绑定权限所属的API服务主体名称 - 双重API名称匹配:优先通过权限ID匹配映射表中的API名称,若匹配失败则通过
ResourceAppId获取对应API的显示名称,确保信息不缺失 - 输出字段扩展:在结果对象中添加
API名称字段,完善权限记录维度 - 编码优化:导出CSV时指定
-Encoding UTF8,解决中文显示乱码问题
内容的提问来源于stack exchange,提问作者ynnaij
相关产品推荐
相关产品推荐

