Untitled
unknown
plain_text
2 years ago
3.6 kB
2
Indexable
Never
#Load SharePoint CSOM Assemblies Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" #Function to find large files of the web Function Find-SPOLargeFiles([String]$SiteURL, [Microsoft.SharePoint.Client.Folder]$Folder) { Write-host -f Yellow "Processing Folder: $($SiteCollURL)$($Folder.ServerRelativeURL)" Try { $LargeFileResult = @() #Get all Files from the folder $FilesColl = $Folder.Files $Ctx.Load($FilesColl) $Ctx.ExecuteQuery() #Iterate through each file and check the size Foreach($File in $FilesColl) { If($File.length -gt 50MB) { $FileURL= $SiteCollURL+$File.ServerRelativeURL $Result = New-Object PSObject $Result | Add-Member NoteProperty FileName($File.Name) $Result | Add-Member NoteProperty FileURL($FileURL) $Result | Add-Member NoteProperty Size-MB([math]::Round($File.Length/1MB)) #Add the result to an Array $LargeFileResult += $Result Write-host -f Green "Found a File '$($File.Name)' with Size $([math]::Round($File.Length/1MB))MB" #Export the result to CSV file $LargeFileResult | Export-CSV $ReportOutput -NoTypeInformation -Append } } #Process all Sub Folders $SubFolders = $Folder.Folders $Ctx.Load($SubFolders) $Ctx.ExecuteQuery() Foreach($Folder in $SubFolders) { #Exclude "Forms" and Hidden folders If( ($Folder.Name -ne "Forms") -and (-Not($Folder.Name.StartsWith("_")))) { #Call the function recursively Find-SPOLargeFiles -SiteURL $SiteURL -Folder $Folder } } } Catch { write-host -f Red "Error Finding Large Files!" $_.Exception.Message } } #Function to Generate Report on Large Files in a SharePoint Online Site Collection Function Get-SPOLargeFilesRpt($SiteURL) { #Setup the context $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Ctx.Credentials = $Credentials #Get the web from given URL and its subsites $Web = $Ctx.web $Ctx.Load($Web) $Ctx.Load($web.Webs) $Ctx.executeQuery() #Call the function to get large files of the web Find-SPOLargeFiles -SiteURL $SiteURL -Folder $Web.RootFolder #Iterate through each subsite of the current web and call the function recursively foreach ($Subweb in $web.Webs) { #Call the function recursively to process all subsites underneath the current web Get-SPOLargeFilesRpt($Subweb.url) } } #Config Parameters $SiteCollURL="https://crescent.sharepoint.com" $ReportOutput="C:\temp\LargeFilesRpt.csv" #Setup Credentials to connect $Cred= Get-Credential $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password) #Delete the Output Report, if exists if (Test-Path $ReportOutput) { Remove-Item $ReportOutput } #Call the function Get-SPOLargeFilesRpt $SiteCollURL