Forum Discussion
Administration
- 1 year ago
WCJ - You will need use 3 APIs to get
1. Gets all workspaces2. Gets reports in each workspace - Loop for each worksapce above
3. Fetches direct report-level permissions - Loop for each report above
If you have Power BI Admin access then can use below powershell script# Connect to Power BI Service
Connect-PowerBIServiceAccount
# Get all workspaces
$workspaces = Get-PowerBIWorkspace -Scope Organization
# Initialize an array to store report details
$reportDetails = @()
foreach ($workspace in $workspaces) {
Write-Host "Processing Workspace: $($workspace.Name)"
# Get reports in the workspace
$reports = Get-PowerBIReport -WorkspaceId $workspace.Id
foreach ($report in $reports) {
Write-Host "Processing Report: $($report.Name)"
# Get users with workspace-level permissions
$workspacePermissions = Get-PowerBIWorkspaceUser -Id $workspace.Id
foreach ($permission in $workspacePermissions) {
$reportDetails += [PSCustomObject]@{
ReportName = $report.Name
ReportId = $report.Id
WorkspaceName = $workspace.Name
WorkspaceId = $workspace.Id
User = $permission.DisplayName
UserEmail = $permission.EmailAddress
AccessScope = "Workspace Level"
AccessRight = $permission.AccessRight
}
}
# Get users with direct report-level permissions
$reportPermissions = Get-PowerBIReportUser -WorkspaceId $workspace.Id -ReportId $report.Id
foreach ($permission in $reportPermissions) {
$reportDetails += [PSCustomObject]@{
ReportName = $report.Name
ReportId = $report.Id
WorkspaceName = $workspace.Name
WorkspaceId = $workspace.Id
User = $permission.DisplayName
UserEmail = $permission.EmailAddress
AccessScope = "Report Level"
AccessRight = $permission.AccessRight
}
}
}
}
# Export results to CSV
$reportDetails | Export-Csv -Path "PowerBI_Reports_Permissions.csv" -NoTypeInformation
Write-Host "Report details exported to PowerBI_Reports_Permissions.csv"
Hi WCJ The best way to do this is using the Power BI REST APIs and extract the data on a daily basis. We make use of Fabric Notebooks to load the data to a lakehouse. Using the REST APIs and Semantic Link.
Here are some usefull links on how to extract the data using PowerShell.
Power BI REST APIs
https://learn.microsoft.com/en-us/rest/api/power-bi/
Power BI Workspace Members Script
https://gist.github.com/jcallaghan/86b391716cdec5b39926e196b28a1496
PowerShell script to list Power BI workspaces and export to Excel
https://gist.github.com/anelliaf/7a43c7f5105d235ff9cdd969498ced7d
Retrieving list of users for all workspaces in your PowerBI tenant using Powershell
https://tomaztsql.wordpress.com/2022/09/03/retrieving-list-of-users-for-all-workspaces-in-your-powerbi-tenant-using-powershell/