You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

请求协助:获取PowerBI租户内所有工作区及关联用户列表

解决PowerShell获取Power BI工作区及关联用户的问题

嘿,作为刚接触PowerShell和Power BI的新手,遇到这种问题太正常了!我来一步步帮你搞定这个需求:

首先,确认权限和模块准备

要获取整个组织的Power BI工作区和用户信息,你需要用拥有Power BI管理员角色的账号操作(普通用户只能看到自己有权限的工作区)。另外,先确保你安装了最新的Power BI管理模块:

# 安装模块(如果没装过)
Install-Module -Name MicrosoftPowerBIMgmt -Scope CurrentUser -Force

# 导入模块
Import-Module MicrosoftPowerBIMgmt

# 登录Power BI服务(用管理员账号)
Connect-PowerBIServiceAccount

修正你的命令,解决Linq错误&获取用户信息

你之前的命令有两个关键问题:

  1. -Include All 不对,要明确指定Users才能拉取工作区的用户权限数据;
  2. 直接导出嵌套的Users属性会因为是集合对象,导致CSV显示Linq迭代器的错误,必须先把嵌套数据展开成扁平结构。

试试这个完整的脚本:

# 连接Power BI服务(如果还没登录)
Connect-PowerBIServiceAccount

# 获取组织内所有工作区,同时拉取用户信息
$allWorkspaces = Get-PowerBIWorkspace -Scope Organization -Include Users -All

# 把工作区和用户的关联数据展开成CSV友好的扁平格式
$formattedOutput = $allWorkspaces | ForEach-Object {
    $currentWorkspace = $_
    # 如果工作区有用户,为每个用户生成一条记录
    if ($currentWorkspace.Users) {
        $currentWorkspace.Users | ForEach-Object {
            [PSCustomObject]@{
                工作区ID = $currentWorkspace.Id
                工作区名称 = $currentWorkspace.Name
                工作区类型 = $currentWorkspace.Type
                用户邮箱 = $_.UserPrincipalName
                用户权限 = $_.AccessRight
                用户类型 = $_.PrincipalType # 比如User、Group等
            }
        }
    } else {
        # 处理没有任何用户的空工作区
        [PSCustomObject]@{
            工作区ID = $currentWorkspace.Id
            工作区名称 = $currentWorkspace.Name
            工作区类型 = $currentWorkspace.Type
            用户邮箱 = $null
            用户权限 = $null
            用户类型 = $null
        }
    }
}

# 导出到CSV,指定UTF8编码避免乱码
$formattedOutput | Export-Csv -Path "C:\temp\PowerBI工作区及用户列表.csv" -NoTypeInformation -Encoding UTF8

为什么之前的方法失败?

  • 论坛帖子的方法可能版本过时,Power BI模块的参数一直在更新;
  • 直接用API的话需要处理身份验证和分页,对新手门槛高;
  • 你原来的命令没指定-Include Users,且没展开嵌套的用户对象,导致CSV输出的是对象引用而非实际数据,就出现了那个Linq错误。

额外注意事项

  • 如果你运行时提示权限不足,检查你的账号是否真的是Power BI管理员(可以在Azure AD或Power BI admin portal里确认);
  • 建议定期更新Power BI模块:Update-Module -Name MicrosoftPowerBIMgmt,避免版本兼容问题。

内容的提问来源于stack exchange,提问作者Dreale20

火山引擎 最新活动