mirror of
https://github.com/admindroid-community/powershell-scripts.git
synced 2025-12-17 08:25:20 +00:00
OneDrive Usage Report
This commit is contained in:
parent
df88db65fe
commit
bc7d8d3cec
110
OneDrive Usage Report/OneDriveUsageReport.ps1
Normal file
110
OneDrive Usage Report/OneDriveUsageReport.ps1
Normal file
@ -0,0 +1,110 @@
|
||||
<#
|
||||
=============================================================================================
|
||||
Name: Get OneDrive Usage Report in Microsoft 365
|
||||
Version: 1.0
|
||||
Website: o365reports.com
|
||||
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
Script Highlights:
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
1. The script allows you to export OneDrive usage report for all OneDrive sites.
|
||||
2. The script uses SharePoint Online Management Shell module and installs it if not already present (with user confirmation).
|
||||
3. Exports the report result to CSV.
|
||||
|
||||
For detailed script execution:https://o365reports.com/2025/09/16/get-onedrive-usage-report-in-microsoft-365/
|
||||
|
||||
============================================================================================
|
||||
#>
|
||||
|
||||
|
||||
param (
|
||||
[string] $UserName,
|
||||
[string] $Password,
|
||||
[string] $HostName
|
||||
|
||||
)
|
||||
|
||||
#Checks SharePointOnline module availability and connects the module
|
||||
Function ConnectSPOService
|
||||
{
|
||||
$SPOService = (Get-Module Microsoft.Online.SharePoint.PowerShell -ListAvailable).Name
|
||||
if ($SPOService -eq $null)
|
||||
{
|
||||
Write-host "Important: SharePoint Online Management Shell module is unavailable. It is mandatory to have this module installed in the system to run the script successfully."
|
||||
$confirm = Read-Host Are you sure you want to install module? [Y] Yes [N] No
|
||||
if ($confirm -match "[Y]")
|
||||
{
|
||||
Write-host `n"Installing SharePoint Online Management Shell Module"
|
||||
Install-Module -Name Microsoft.Online.SharePoint.PowerShell -Allowclobber -Repository PSGallery -Force -Scope CurrentUser
|
||||
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-host "Exiting. `nNote: SharePoint Online Management Shell module must be available in your system to run the script."
|
||||
Exit
|
||||
}
|
||||
}
|
||||
|
||||
#Connecting to SharePoint Online PowerShell
|
||||
if($HostName -eq "")
|
||||
{
|
||||
Write-Host SharePoint organization name is required.`nEg: Contoso for admin@Contoso.Onmicrosoft.com -ForegroundColor Yellow
|
||||
$HostName= Read-Host "Please enter SharePoint organization name"
|
||||
}
|
||||
$ConnectionUrl = "https://$HostName-admin.sharepoint.com/"
|
||||
Write-Host `n"Connecting SharePoint Online Management Shell..."`n
|
||||
if (($UserName -ne "") -and ($Password -ne "") )
|
||||
{
|
||||
$SecuredPassword = ConvertTo-SecureString -AsPlainText $Password -Force
|
||||
$Credential = New-Object System.Management.Automation.PSCredential $UserName, $SecuredPassword
|
||||
Connect-SPOService -Credential $Credential -Url $ConnectionUrl | Out-Null
|
||||
}
|
||||
else
|
||||
{
|
||||
Connect-SPOService -Url $ConnectionUrl | Out-Null
|
||||
}
|
||||
|
||||
}
|
||||
ConnectSPOService
|
||||
$Location=Get-Location
|
||||
$ExportCSV="$Location\OneDriveStorageReport_$((Get-Date -format yyyy-MMM-dd-ddd` hh-mm` tt).ToString()).csv"
|
||||
$Count=0
|
||||
Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'" | foreach {
|
||||
$Count++
|
||||
$UserName=$_.Title
|
||||
$UPN=$_.Owner
|
||||
$Url=$_.Url
|
||||
Write-Progress -Activity "`n Processed OneDrive site count: $Count "`n" Currently processing site: $url"
|
||||
$StorageSize=$_.StorageUsageCurrent
|
||||
$LastContentModifiedDate=$_.LastContentModifiedDate
|
||||
$StorageQuota=$_.StorageQuota
|
||||
$StorageQuotainGB=[math]::round($StorageQuota/1024, 2)
|
||||
$StorageSizeinGB=[math]::round($StorageSize/1024, 2)
|
||||
$Status=$_.Status
|
||||
$ArchiveStatus=$_.ArchiveStatus
|
||||
$Result=@{ 'Owner UPN'=$UPN;'OneDrive Url'=$url;'Storage Used (GB)'=$StorageSizeinGB;'Storage Quota (GB)'=$StorageQuotainGB;'Storage Used (MB)'=$StorageSize;'Storage Quota (MB)'=$StorageQuota;'Status'=$Status;'Archive Status'=$ArchiveStatus;'Last Content Modified Date'=$LastContentModifiedDate}
|
||||
$Results= New-Object PSObject -Property $Result
|
||||
$Results | Select-Object 'Owner UPN','OneDrive Url','Storage Used (GB)','Storage Quota (GB)','Storage Used (MB)','Storage Quota (MB)','Status','Archive Status','Last Content Modified Date'| Export-Csv -Path $ExportCSV -Notype -Append }
|
||||
|
||||
|
||||
Write-Host `n~~ Script prepared by AdminDroid Community ~~`n -ForegroundColor Green
|
||||
Write-Host "~~ Check out " -NoNewline -ForegroundColor Green; Write-Host "admindroid.com" -ForegroundColor Yellow -NoNewline; Write-Host " to access 3,000+ reports and 450+ management actions across your Microsoft 365 environment. ~~" -ForegroundColor Green `n`n
|
||||
|
||||
|
||||
|
||||
if((Test-Path -Path $ExportCSV) -eq "True")
|
||||
{
|
||||
Write-Host `The exported report contains $Count OneDrive sites.
|
||||
Write-Host `nOneDrive sites report available in: -NoNewline -Foregroundcolor Yellow; Write-Host $ExportCSV
|
||||
$Prompt = New-Object -ComObject wscript.shell
|
||||
$UserInput = $Prompt.popup("Do you want to open output file?",`
|
||||
0,"Open Output File",4)
|
||||
If ($UserInput -eq 6)
|
||||
{
|
||||
Invoke-Item "$ExportCSV"
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host No OneDrive accounts found.
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user