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

PowerBI运维:如何用PowerShell导出含WorkspaceID和DatasetID的报表列表?

PowerBI工作区与对应报表、数据集的关联导出方案

我需要完成一项管理员任务,记录每个工作区中的所有报表和数据集。目前已能单独获取工作区、报表、数据集列表,但无法将这些数据关联,尤其是没法导出包含对应WorkspaceID的报表列表,寻求解决方法。

已实现的单独获取脚本:

1. 获取所有工作区

Get-PowerBIWorkspace -Scope Organization -All | ConvertTo-Json | Out-File c:\PowerBIWorkspaces.json

2. 获取所有报表(无关联WorkspaceID)

$timestamp = (Get-Date).ToString("yyyy-MM-dd_HHmmss")
$namefolder = "C:\filepath\Admin\"
$namefile = "workspace_reports_meta" + "_" + $timestamp
$extension = ".json" 
$filenamestring = $namefolder + $namefile + $extension
Get-PowerBIReport -Scope Organization | ConvertTo-Json | Out-File $filenamestring

3. 获取所有数据集(无关联WorkspaceID)

$timestamp = (Get-Date).ToString("yyyy-MM-dd_HHmmss")
$namefolder = "C:\filepath\Admin\"
$namefile = "workspace_datasets_meta" + "_" + $timestamp
$extension = ".json" 
$filenamestring = $namefolder + $namefile + $extension
Get-PowerBIDataset -Scope Organization | ConvertTo-Json | Out-File $filenamestring

关联导出解决方案

核心思路是遍历每个工作区,在工作区上下文内获取对应的报表和数据集,自动带上WorkspaceID关联信息。

完整脚本

# 配置输出路径和时间戳
$timestamp = (Get-Date).ToString("yyyy-MM-dd_HHmmss")
$outputFolder = "C:\filepath\Admin\"
$outputFile = $outputFolder + "PowerBI_Workspace_Assets_" + $timestamp + ".json"

# 创建空数组存储最终结果
$workspaceAssets = @()

# 获取所有组织级工作区
$workspaces = Get-PowerBIWorkspace -Scope Organization -All

# 遍历每个工作区
foreach ($workspace in $workspaces) {
    Write-Host "Processing workspace: $($workspace.Name) (ID: $($workspace.Id))"

    # 获取当前工作区下的所有报表,添加工作区关联字段
    $reports = Get-PowerBIReport -WorkspaceId $workspace.Id -Scope Organization | Select-Object Id, Name, DatasetId, @{Name="WorkspaceId"; Expression={$workspace.Id}}, @{Name="WorkspaceName"; Expression={$workspace.Name}}

    # 获取当前工作区下的所有数据集,添加工作区关联字段
    $datasets = Get-PowerBIDataset -WorkspaceId $workspace.Id -Scope Organization | Select-Object Id, Name, IsRefreshable, RefreshSchedule, @{Name="WorkspaceId"; Expression={$workspace.Id}}, @{Name="WorkspaceName"; Expression={$workspace.Name}}

    # 组装工作区资产信息
    $workspaceData = [PSCustomObject]@{
        WorkspaceId = $workspace.Id
        WorkspaceName = $workspace.Name
        WorkspaceType = $workspace.Type
        Reports = $reports
        Datasets = $datasets
    }

    # 添加到最终结果数组
    $workspaceAssets += $workspaceData
}

# 导出为JSON文件,设置深度避免嵌套对象截断
$workspaceAssets | ConvertTo-Json -Depth 10 | Out-File $outputFile

Write-Host "Export completed! File saved to: $outputFile"

脚本说明

  • 遍历关联:通过循环逐个处理工作区,确保报表和数据集直接绑定所属工作区的ID与名称。
  • 自定义字段:用Select-Object的计算属性,给报表和数据集手动添加WorkspaceId、WorkspaceName,便于后续查询分析。
  • 深度控制:ConvertTo-Json添加-Depth 10参数,避免PowerBI嵌套对象被截断。
  • 进度跟踪:输出当前处理的工作区名称,方便监控执行状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:26:22