User Profile
Mdcardarelli
Copper Contributor
Joined May 15, 2023
User Widgets
Recent Discussions
Help - need to create a report of all versions of a file for all files in all doc Libraries
Hi all, I can use some help. I'm fairly new to PowerShell. I would appreciate your help dearly. I have been asked to write a script to list all files in all document libraries on a site before a given date. I have searched the internet and found the following script that searches all document libraries in a site and compiles the number of versions for each file. It exports the following to a CSV file with the following data: File Name - Site Name - Version Count - Version size - Library - Url Here is the script: #Import SharePoint Online module Import-Module Microsoft.Online.SharePoint.Powershell Function Generate-VersionHistoryReport() { param ( [Parameter(Mandatory=$true)] [string] $SiteURL, [Parameter(Mandatory=$true)] [string] $ReportOutput ) Try { #Setup the context $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Ctx.Credentials = $Credentials #Get all subsites and Lists from the site $Web = $Ctx.Web $Ctx.Load($Web) $Ctx.Load($Web.Webs) $Lists = $Web.Lists $Ctx.Load($Lists) $Ctx.ExecuteQuery() Write-host -f Yellow "Processing Site: "$SiteURL #Exclude system lists $ExcludedLists = @("Access Requests","App Packages","appdata","appfiles","Apps in Testing","Cache Profiles","Composed Looks","Content and Structure Reports","Content type publishing error log","Converted Forms", "Device Channels","Form Templates","fpdatasources","Get started with Apps for Office and SharePoint","List Template Gallery", "Long Running Operation Status","Maintenance Log Library", ,"Master Docs","Master Page Gallery" "MicroFeed","NintexFormXml","Quick Deploy Items","Relationships List","Reusable Content","Reporting Metadata", "Reporting Templates", "Search Config List","Site Assets", "Site Pages", "Solution Gallery", "Style Library","Suggested Content Browser Locations","Theme Gallery", "TaxonomyHiddenList","User Information List","Web Part Gallery","wfpub","wfsvc","Workflow History","Workflow Tasks") #Iterate through each list in a site and get versioning configuration ForEach($List in $Lists) { if(($ExcludedLists -NotContains $List.Title) -and ($List.EnableVersioning) -and ($List.BaseType -eq "DocumentLibrary")) { Write-Host "`tProcessing Library:"$List.Title #Query to Batch process Items from the document library $Query = New-Object Microsoft.SharePoint.Client.CamlQuery $Query.ViewXml = "<View Scope='RecursiveAll'><Query><OrderBy><FieldRef Name='ID' /></OrderBy></Query><RowLimit>2000</RowLimit></View>" $VersionHistoryData = @() Do { $ListItems=$List.GetItems($Query) $Ctx.Load($ListItems) $Ctx.ExecuteQuery() $Query.ListItemCollectionPosition = $ListItems.ListItemCollectionPosition #Iterate through each version of the file $VersionHistoryData = @() #Iterate through each file - Excluding Folder Objects Foreach ($Item in $ListItems | Where { $_.FileSystemObjectType -eq "File"}) { $File = $web.GetFileByServerRelativeUrl($Item["FileRef"]) $Ctx.Load($File) $Ctx.Load($File.Versions) $Ctx.ExecuteQuery() If($File.Versions.Count -ge 1) { $VersionSize=0 #Print File Name write-host $File.name #Calculate Version Size Foreach ($Version in $File.Versions) { write-host $Version.Size write-host $Version.date $VersionSize = $VersionSize + $Version.Size } #Send Data to the object array $VersionHistoryData += New-Object PSObject -Property @{ 'Site' = $SiteURL 'Library' = $List.Title 'File Name' = $File.Name 'Version Count' = $File.Versions.count 'Version Size-KB' = ($VersionSize/1024) 'URL' = $SiteURL+$File.ServerRelativeUrl } } } } While ($Query.ListItemCollectionPosition -ne $null) #Export the data to CSV $VersionHistoryData | Export-Csv $ReportOutput -Append -NoTypeInformation } } #Iterate through each subsite in the current web Foreach ($Subweb in $Web.Webs) { #Call the function recursively to process all subsites underneath the current web Generate-VersionHistoryReport -SiteURL $Subweb.URL -ReportOutput $ReportOutput } } Catch { write-host -f Red "Error Generating version History Report!" $_.Exception.Message } } #Set parameter values $SiteURL="https://tenant.sharepoint.com/sites/Clients" $ReportOutput="C:\Temp\VersionHistoryRpt.csv" #Get Credentials to connect $Cred= Get-Credential $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password) #Delete the Output report file if exists If (Test-Path $ReportOutput) { Remove-Item $ReportOutput } #Call the function to generate the version History Report Generate-VersionHistoryReport -SiteURL $SiteURL -ReportOutput $ReportOutput
Recent Blog Articles
No content to show