Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
I'm using the PowerShell Script from https://insightsquest.com/2019/06/19/power-bi-artifact-to-workspace-relationships/, using my userid/pw to return all workspaces, and reports. essentially looping through all the workspaces to retrieve the reportname, reported, and workspace. I am getting the output I would expect, but I'm not sure if all the reports are retrieved.
$User = "userid@companyname"
$PW = "#useridpassword"
$SecPasswd = ConvertTo-SecureString $PW -AsPlainText -Force
$myCred = New-Object System.Management.Automation.PSCredential($User,$SecPasswd)
Login-PowerBIServiceAccount -Credential $myCred
$RetrieveDate = Get-Date
#1. Define output file paths
$BasePath = "C:\temp\New"
#Export Paths: Power BI Artifacts
$WorkspacesPath = $BasePath + "Workspaces.csv"
$ReportsPath = $BasePath + "Reports.csv"
#2. Get active workspaces excluding personal workspaces ('My Workspace')
$ActiveWorkspaces = Get-PowerBIWorkspace -Scope Organization -All <#| Where-Object {$_.Type -ne "PersonalGroup" -and $_.State -eq "Active"} #> |`
Select-Object *, @{Name="DateRetrieved";Expression={$RetrieveDate}}
#3. Get reports in active workspaces but avoid duplicate reports (due to apps) and exclude usage metrics reports
$Reports = ForEach ($WS in $ActiveWorkspaces)
{
$WSID = $WS.Id
Get-PowerBIReport -Scope Organization -WorkspaceId $WSID | Where-Object {$_.Name -ne "Dashboard Usage Metrics Report" -and $_.Name -ne "Report Usage Metrics Report"} | `
Select-Object Name,DatasetId,@{Name="WorkspaceID";Expression={$WSID}},@{Name="DateRetrieved";Expression={$RetrieveDate}} | `
Sort-Object -Property Name,WorkspaceID | Get-Unique -AsString
}
#4. Export out artifact objects to CSV files for reporting
$ActiveWorkspaces | Export-Csv $WorkspacesPath
$Reports | Export-Csv $ReportsPath
Hi @rthomas
The 'too many requests' status code would suggest that the API rate limiting is stopping you from getting a complete set of responses. It might be worth trying a short pause within the loop before you call 'Get-PowerBI-Report'
You can get PowerShell to pause by using the 'Start-Sleep' command.
Start-Sleep -Seconds 60
I am not suggesting you use 60 seconds between calls. A couple of seconds should probably do it.
Cheers, Matt
Check out the July 2025 Power BI update to learn about new features.
User | Count |
---|---|
6 | |
6 | |
3 | |
2 | |
2 |
User | Count |
---|---|
5 | |
5 | |
4 | |
4 | |
3 |