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"
WCJ - You will need use 3 APIs to get
1. Gets all workspaces
2. 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"
Thanks for that much appreciated. I will update this post when I've tried the API's.