From 4f1f674f10a3c42d3ff2ccce878dc756a212bb15 Mon Sep 17 00:00:00 2001 From: AdminDroid <49208841+admindroid-community@users.noreply.github.com> Date: Thu, 20 Jun 2024 17:55:19 +0530 Subject: [PATCH] Export OneDrive Urls and Storage Size --- .../GetOneDriveSiteUrls.ps1 | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 Export OneDrive Urls and Usage Size/GetOneDriveSiteUrls.ps1 diff --git a/Export OneDrive Urls and Usage Size/GetOneDriveSiteUrls.ps1 b/Export OneDrive Urls and Usage Size/GetOneDriveSiteUrls.ps1 new file mode 100644 index 0000000..168797a --- /dev/null +++ b/Export OneDrive Urls and Usage Size/GetOneDriveSiteUrls.ps1 @@ -0,0 +1,101 @@ +<# +============================================================================================= +Name: Get OneDrive site urls and size using PowerShell +Version: 1.0 +Website: m365scripts.com + + +Script Highlights : +~~~~~~~~~~~~~~~~~ +1. The script fetches all the OneDrive URLs and their storage usage. +2. Exports report results into CSV format for easy access and analysis. +3. The script is scheduler friendly. I.e., You can pass the credential as parameters instead of saving inside the script. + +For detailed script execution: https://m365scripts.com/microsoft365/get-all-onedrive-site-urls-for-users-using-powershell/ +============================================================================================ +#> + + +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\List_OneDriveURLs_$((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 + $Result=@{ 'Owner UPN'=$UPN;'OneDrive Url'=$url;'Storage Used Size (MB)'=$StorageSize;'Storage Quota (MB)'=$StorageQuota;'Status'=$Status;'Last Content Modified Date'=$LastContentModifiedDate} + $Results= New-Object PSObject -Property $Result + $Results | Select-Object 'OneDrive Url','Owner UPN','Storage Used Size (MB)','Storage Quota (MB)','Last Content Modified Date'| Export-Csv -Path $ExportCSV -Notype -Append } + + if((Test-Path -Path $ExportCSV) -eq "True") + { + Write-Host `nThe exported report contains $Count OneDrive sites. + Write-Host `nOneDrive sites report available in: -NoNewline -Foregroundcolor Yellow; Write-Host $ExportCSV + 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 get access to 1800+ Microsoft 365 reports. ~~" -ForegroundColor Green `n`n + $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 items found. + } \ No newline at end of file