You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:20:04