Forum Discussion

NightWing2099's avatar
NightWing2099
Copper Contributor
Feb 06, 2025

I want to create Sharepoint Verisoning Report on my Tenant

I have created a script, but dont seem to be able to find out how many file versions there are  , 

 

Config Variables 

$TenantAdminURL = "https://admin.sharepoint.com" 
$CSVFilePath = "C:\Temp\RESTART.csv" 

#Get the Root Web #$Web = Get-PnpWeb 
#$versions = Get-SPOListItemVersion -ListItem $listItem

#Get the Site Title Write-host -f Green $Web.Title

#Connect to Admin Center using PnP Online

Connect-PnPOnline -Url $TenantAdminURL -ClientId “cabf4-cc9b-4dcf-807b-8af94c3c4333" -Interactive -ForceAuthentication

#Delete the Output Report, if exists if (Test-Path $CSVFilePath) { Remove-Item $CSVFilePath }

#Get All Site collections - Exclude: Seach Center, Redirect site, Mysite Host, App Catalog, Content Type Hub, eDiscovery and Bot Sites $SiteCollections = Get-PnPTenantSite | Where { $.URL -like '/sites' -and $.Template -NotIn ("SRCHCEN#0", "REDIRECTSITE#0", "SPSMSITEHOST#0", "APPCATALOG#0", "POINTPUBLISHINGHUB#0", "EDISC#0", "STS#-1")}

#Get All Large Lists from the Web - Exclude Hidden and certain lists $ExcludedLists = @("Form Templates","Site Assets", "Pages", "Site Pages", "Images", "Site Collection Documents", "Site Collection Images","Style Library")

$SiteCounter = 1
#Loop through each site collection ForEach($Site in $SiteCollections) {
#Display a Progress bar Write-Progress -id 1 -Activity "Processing Site Collections" -Status "Processing Site: $($Site.URL)' ($SiteCounter of $($SiteCollections.Count))" -PercentComplete (($SiteCounter / $SiteCollections.Count) * 100)

#Connect to the site
Connect-PnPOnline -Url $Site.URL -Interactive

#Get all document libraries
$DocumentLibraries = Get-PnPList | Where-Object {$_.BaseType -eq "DocumentLibrary" -and $_.Hidden -eq $False -and $_.Title -notin $ExcludedLists -and $_.ItemCount -gt 0}

$ListCounter = 1

$ItemsColl = $List2.Items

#Iterate through document libraries
ForEach ($List in $DocumentLibraries)
{
    $global:counter = 0
    $FileData = @()

    Write-Progress -id 2 -ParentId 1 -Activity "Processing Document Libraries" -Status "Processing Document Library: $($List.Title)' ($ListCounter of $($DocumentLibraries.Count))" -PercentComplete (($ListCounter / $DocumentLibraries.Count) * 10)

    #Get All Files of the library with size > 100MB
    $Files = Get-PnPListItem -List $List -Fields FileLeafRef,FileRef,SMTotalFileStreamSize -PageSize 500 -ScriptBlock { Param($items) $global:counter += $items.Count; Write-Progress -Id 3 -parentId 2 -PercentComplete ($global:Counter / ($List.ItemCount) * 10) -Activity "Getting List Items of '$($List.Title)'" -Status "Processing Items $global:Counter to $($List.ItemCount)";} | Where {($_.FileSystemObjectType -eq "File") -and ($_.FieldValues.SMTotalFileStreamSize/1MB -gt 100)}

    #Collect data from each files
    ForEach ($File in $Files)
    {
        $FileData += [PSCustomObject][ordered]@{
            

            Site = $Web.url
            Library      = $List.Title
            FileName  = $File.FieldValues.FileLeafRef
            URL            = $File.FieldValues.FileRef
            Size            = [math]::Round(($File.FieldValues.SMTotalFileStreamSize/1MB),2)
          
            


          
        }
    }

    #Export Files data to CSV File
    $FileData | Sort-object Size -Descending
    $FileData | Export-Csv -Path $CSVFilePath -NoTypeInformation -Append
    $ListCounter++
    #Write-Progress -Activity "Completed Processing List $($List.Title)" -Completed -id 2

}
$SiteCounter++
}

No RepliesBe the first to reply

Resources