如何借助Power BI REST API获取各Power BI应用的用户权限列表?
获取Power BI应用的授权用户列表
你说得对,Get Apps端点确实只返回应用的基本元数据(比如名称、发布者、更新时间),不会包含任何用户权限信息。要获取每个Power BI应用的授权用户/组列表,你需要使用**Get App Users**这个专门的REST API端点,它可以针对单个应用ID返回所有有权访问该应用的主体信息。
具体步骤
1. 使用正确的API端点
针对每个应用,调用以下端点:
GET https://api.powerbi.com/v1.0/myorg/apps/{appId}/users
其中{appId}是你从Get Apps端点获取到的每个应用的唯一ID(比如示例中的f089354e-8366-4e18-aea3-4cb4a3a50b48)。
2. PowerShell代码示例
结合你已有的代码,这里是完整的遍历所有应用并获取用户列表的脚本:
# 登录Power BI服务 Login-PowerBI # 获取域内所有已安装的应用 $apps = Invoke-PowerBIRestMethod -Url "https://api.powerbi.com/v1.0/myorg/apps" -Method Get | ConvertFrom-Json # 遍历每个应用,获取对应的授权用户 foreach ($app in $apps.value) { Write-Host "=== 应用:$($app.name) (ID: $($app.id)) ===" # 调用Get App Users端点 try { $appUsers = Invoke-PowerBIRestMethod -Url "https://api.powerbi.com/v1.0/myorg/apps/$($app.id)/users" -Method Get | ConvertFrom-Json if ($appUsers.value.Count -gt 0) { Write-Host "授权用户/组列表:" $appUsers.value | Format-Table displayName, emailAddress, accessRight, groupId -AutoSize } else { Write-Host "该应用暂无任何授权用户或组。" } } catch { Write-Warning "获取应用 '$($app.name)' 的用户列表失败:$($_.Exception.Message)" } Write-Host "`n" }
3. 返回结果说明
调用Get App Users后返回的用户数据包含以下关键字段:
displayName:用户或组的显示名称emailAddress:用户的邮箱地址(组的话此字段为空)accessRight:用户的权限级别,常见值为Admin、Member、ViewergroupId:如果是组授权,此字段为组的唯一ID(用户的话此字段为空)
注意事项
- 权限要求:执行此脚本的账号需要拥有
Workspace.Read.All或App.Read.All的Power BI API权限,否则会返回权限不足的错误。 - 组织级共享应用:如果应用是共享给整个组织的,
Get App Users端点会返回一个特殊的条目(displayName为"Entire Organization"),代表所有组织内用户都有权访问该应用。
内容的提问来源于stack exchange,提问作者Koen
相关产品推荐
相关产品推荐

