Forum Discussion
Full Comprehensive PowerBI Service Audit
- 1 year ago
Hi icassiem ,
For more details, you can refer the below Microsoft Documentations:
1.Power BI PowerShell Overview & Installation: Power BI Cmdlets reference | Microsoft Learn
2.Connecting to the Power BI Service:Connect-PowerBIServiceAccount (MicrosoftPowerBIMgmt.Profile) | Microsoft LearnHere are some mapping to your requirements:
1.Report names & count:Get-PowerBIReport (MicrosoftPowerBIMgmt.Reports) | Microsoft Learn2.Workspace names, count, members:Get-PowerBIWorkspace (MicrosoftPowerBIMgmt.Workspaces) | Microsoft Learn
3.Active/inactive workspaces:Get-PowerBIActivityEvent (MicrosoftPowerBIMgmt.Admin) | Microsoft Learn
4.Active users (names) > [Get-PowerBIActivityEvent]
5.Inactive users > Compare all users (Get-PowerBIWorkspaceUser) with active list from Get-PowerBIActivityEvent
6.Report usage (including link views) > [Get-PowerBIActivityEvent]
7.Get-PowerBIDataset (PowerShell):Get-PowerBIDataset (MicrosoftPowerBIMgmt.Data) | Microsoft Learn
8.Get Refresh History (Power BI REST API):Datasets - Get Refresh History - REST API (Power BI Power BI REST APIs) | Microsoft Learn
9.Failed refreshes > [Get-PowerBIRefreshHistory]10.Data size per workspace > Admin API in Power BI REST APIs for embedded analytics and automation - Power BI REST API | Microsoft Learn or Premium Capacity Metrics App
11.Personal workspaces > Get-PowerBIWorkspace -Scope Individual
Thank you.
Hi icassiem
You can cover most of the audit with Power BI Admin access using PowerShell and Admin APIs.
What you can get:
- Report names & count >> Get-PowerBIReport -Scope Organization
- Workspace names, count, members >> Get-PowerBIWorkspace -All + Get-PowerBIWorkspaceUser
- Active/inactive workspaces >> Use last activity or refresh date
- Active users (names) >> From Get-PowerBIActivityEvent
- Inactive users >> Subtract from full user list (request from IT)
- Report usage (including link views) >> Tracked in activity logs
- Report refresh rate & last refreshed >> Get-PowerBIDataset + Get-PowerBIRefreshHistory
- Failed refreshes >> Check refresh status
- Data size per workspace >> Admin API or Premium Metrics App
- Personal workspaces >> Get-PowerBIWorkspace -Scope Individual
- Data size per workspace or tenant:
You can get dataset sizes using Get-PowerBIDataset and some metadata columns (especially if you’re on Premium).
Or just ask IT to help with the Premium Capacity Metrics App if you have Premium. - Personal workspaces with reports:
Use Get-PowerBIWorkspace -Scope Individual and check which ones contain reports.
What You Can't Fully Do Without Azure:
- Get a clean list of all users in the tenant
- Tie usage back to things like job roles or departments
- Trace external sharing (guests might be tricky depending on how IT set up access)
MFelix , rohit1991 v-venuppu Thank You for helping me
MFelix my org does not have fabric and i have no funds for this exercise, so i wont be able to purchase for this once off task
rohit1991 can you please provide the "How" in terms of the actual code examples on calling each API or links for each of the 14?
I dont have Premium for Premium Metrics App and i think i can skip this What You Can't Fully Do Without Azure
The list was defined by me so that could provide pivot tables view for my senior and stakeholders, hence anything important i am missing "Point 15"
- MFelix1 year agoSuper User
Hi icassiem ,
If you don't have a fabric capacity then you can check the Monitor Report Usage metrics
https://learn.microsoft.com/en-us/power-bi/collaborate-share/service-usage-metrics
https://learn.microsoft.com/en-us/power-bi/collaborate-share/service-modern-usage-metrics- icassiem1 year agoPost Prodigy
rohit1991 , MFelix Thank You
rohit1991 1. Refresh Failures Summary, 5. Gateway Analysis: and 7. License Usage:
Can you please provide the powershell code + api examples to all these i require, and how
MFelix its more a once-off or every 2 years exercise, so i dont really want to be developing a report. Also this works for a specific dataset/report only, it does not give me the big picture of things i am not aware of, like personal workspaces, the users uasge etc
- rohit19911 year agoSuper User
Hi icassiem
Additional Items You Might Be Missing :
-
Additional Items You Might Be Missing :
- Refresh Failures Summary
- List of all datasets with refresh failures (last 30/60/90 days)
- Helps spot reliability issues early
- Power BI Apps:
- Number of published apps, usage stats, and access mapping
- Paginated Reports (RDL):
- Count, owners, access mapping, and refresh logs (if using Paginated Reports)
- Embedded Reports or Service Principal Use:
- Check for reports used in embedding scenarios (e.g., external portals)
- List Service Principals and what access they have
- Gateway Analysis:
- On-prem gateways, associated datasources, and admins
- Tenant Settings Snapshot:
- Export critical Power BI tenant settings (e.g., Export control, share externally, Publish to web etc.)
- Useful for auditing governance posture
- License Usage:
- List of Pro users not publishing or viewing reports (to optimize license cost)
- Sensitivity Labels & Data Classification:
- Which reports/datasets are labeled? Any missing?
- Audit Log Retention:
- Ensure important logs (activity, sharing, access) are being archived if M365 log retention is limited
- Datasets with Large Size or Long Refresh Duration:
- High-resource datasets can impact capacity , identify them early
-