Get OneDrive Usage Report Via PowerShell or Microsoft 365 Admin Center
One of the biggest challenges for Microsoft 365 admins is not having a proper OneDrive report to track the storage consumption by users. You can solve this by learning how to get OneDrive usage report PowerShell or with the Admin Center.
This guide covers three methods to export OneDrive usage report step by step. So, without wasting time on an intro, let’s start our discussion.
Why Get OneDrive Usage Report?
Need to generate a OneDrive usage report is essential because:
- To track how much storage each user is consuming.
- Identify users who are not actively using OneDrive.
- Meet compliance and audit requirements.
- Measure adoption and user engagement.
- Plan and prepare to move a Shared Document in OneDrive or for data migrations.
- To prevent storage quota issues before they occur.
Proper planning and reporting are necessary for effective management of large data. That’s why let’s learn how to export a precise report.
How to Get OneDrive Usage Report PowerShell & Admin Center?
Getting the Office 365 OneDrive usage report requires some prerequisites to be verified:
- Global Administrator, Reports Reader, or SharePoint Administrator role in Microsoft 365.
- PowerShell latest version installed. Microsoft Graph PowerShell module or Microsoft 365 Reports module installed:
Install-Module Microsoft.Graph -Scope CurrentUser
Install-Module Microsoft.Graph.Reports -Scope CurrentUser
- Proper permissions to access OneDrive usage reports in the tenant.
- Ensure Office 365 backup best practices.
- Stable internet connectivity is required.
When ensuring that you have proper permissions and admin rights, move to the solutions to get the report.
#Method 1. Microsoft 365 Admin Center
If you just want to see the storage report for only one OneDrive for Business. Then leverage the Microsoft 365 admin center for quick results, instead, to get OneDrive usage report PowerShell:
- Sign in to the Microsoft 365 Admin Center.
- Go to Reports > Usage.
- Select OneDrive from the available reports.
- Choose the reporting period of 90 or 180 days.
- The report shows:
- Active users
- Total files
- Storage used
- Trend charts over time
- Click Export to download the report in CSV format.
The Admin Center is great for a visual overview, but it doesn’t allow filtering or automation. For the same, opt for PowerShell, which we’ll cover next.
#Method 2. Get OneDrive Usage Report PowerShell (Microsoft Graph)
#Install the Graph Module
Install-Module Microsoft.Graph.Reports -Scope CurrentUser
#Connect to Graph
Import-Module Microsoft.Graph.Reports
$requiredScopes = @(“Reports.Read.All”)
Connect-MgGraph -Scopes $requiredScopes
#Disable Concealed User Data (Optional)
# View setting
Get-MgAdminReportSetting
# Disable data concealment
Update-MgAdminReportSetting -DisplayConcealedNames:$false
#Export OneDrive Usage Report
$exportPath = “C:\OneDriveReports\OneDriveUsage_D30.csv”
Get-MgReportOneDriveUsageAccountDetail -Period D30 -OutFile $exportPath
This report includes user principal name, display name, site URL, last activity date, file counts, and storage usage.
#Convert Storage to GB for Readability
$reportFile = “C:\OneDriveReports\OneDriveUsage_D30.csv”
$processedReport = “C:\OneDriveReports\OneDriveUsage_D30_Friendly.csv”
Import-Csv $reportFile | ForEach-Object {
$_ | Add-Member -NotePropertyName StorageUsedGB -NotePropertyValue ([math]::Round([double]($_.’Storage Used (Byte)’)/1GB,2)) -PassThru |
Add-Member -NotePropertyName StorageAllocatedGB -NotePropertyValue ([math]::Round([double]($_.’Storage Allocated (Byte)’)/1GB,2)) -PassThru
} | Export-Csv -Path $processedReport -NoTypeInformation
#Find Inactive Users
$reportFile = “C:\OneDriveReports\OneDriveUsage_D90.csv”
$inactiveReport = “C:\OneDriveReports\InactiveOneDriveUsers.csv”
$thresholdDate = (Get-Date).AddDays(-90)
Import-Csv $reportFile | Where-Object {
$_.’Last Activity Date’ -and ([datetime]$_.’Last Activity Date’) -lt $thresholdDate
} | Export-Csv -Path $inactiveReport -NoTypeInformation
#Export OneDrive Activity Report
$activityReport = “C:\OneDriveReports\OneDriveActivity_D30.csv”
Get-MgReportOneDriveActivityUserDetail -Period D30 -OutFile $activityReport
#Method 3. Real-Time Storage with SharePoint Online PowerShell
Since Graph reports can be up to 48 hours delayed, for current storage values, use the SharePoint Online Management Shell to get OneDrive usage report PowerShell real-time:
Connect-SPOService -Url https://sharepointtenant-spadmin.sharepoint.com
Get-SPOSite -IncludePersonalSite $true -Limit All |
Select-Object Url, Owner, StorageUsageCurrent, StorageQuota
This gives you the exact current storage usage of all OneDrive sites.
Best Practices for OneDrive Usage Reporting
Even with reliable methods and step-by-step instructions, humans can make mistakes, so that’s why following these best practices is necessary:
- Schedule PowerShell scripts with Task Scheduler or Azure Automation to get regular reports.
- Identify inactive accounts and reassign or clean up storage.
- Compare monthly reports to spot increasing storage trends.
- If full admin access isn’t required, always use least privilege.
- Set retention policy to keep historical usage reports for future use.
Author’s Verdict
Today, we learned how to get OneDrive usage report PowerShell & Microsoft 365 Admin center. Don’t forget to follow best practices for expected results.
People Also Ask
Q1. Can I check OneDrive usage for a single user?
Yes, you can filter by user principal name in the Graph command or export and filter in Excel.
Q2. How far back can I view OneDrive usage reports?
The maximum reporting period available is 180 days.
Q3. What’s the difference between Admin Center reports and PowerShell reports?
The Admin Center is easier for quick checks, while PowerShell provides automation and export flexibility.
Q4. Do I need special licensing to run these reports?
No additional license is required because any Microsoft 365 subscription with OneDrive for Business includes usage reporting.
Q5. Which method is recommended in 2025?
I recommend getting the OneDrive usage report PowerShell (Microsoft Graph) since it’s the modern API and will replace legacy modules in the future.