kwizcom banner advertisement

SharePoint Online: Versioning Analysis on All Lists and Libraries using PowerShell

Requirement: Audit versioning settings for all lists and libraries in SharePoint online site collection.
powershell to get versioning settings in sharepoint online

PowerShell to Generate Versioning Settings Analysis for SharePoint Online Site Collection:
#Import SharePoint Online module
Import-Module Microsoft.Online.SharePoint.Powershell

Function Audit-VersioningSettings()
{
  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()
        
        $VersioningData = @()
        Write-host -f Yellow "Processing Site: "$SiteURL
        #Iterate through each list in a site and get versioning configuration
        ForEach($List in $Lists)
        {
            $VersioningData += New-Object PSObject -Property @{
            'Site' = $SiteURL
            'List' = $List.Title
            'Versioning Enabled' = $List.EnableVersioning
            'Major Versions Limit' = $List.MajorVersionLimit
            'Draft Versions Limit' = $List.MajorWithMinorVersionsLimit
            'Draft Item Security' = $List.DraftVersionVisibility
            'Content Approval Required' = $List.EnableModeration
            'Checkout Required' = $List.ForceCheckout
            }
        }
        #Export the data to CSV
        $VersioningData | 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 underneaththe current web
            Audit-VersioningSettings -SiteURL $Subweb.URL -ReportOutput $ReportOutput
        }
     }
    Catch {
        write-host -f Red "Error Auditing versioning Settings!" $_.Exception.Message
    } 
}

#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ReportOutput="C:\Temp\VersioningData.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 versioning data audit report
Audit-VersioningSettings -SiteURL $SiteURL -ReportOutput $ReportOutput

This PowerShell script generates a CSV output provided in the $ReportOutput parameter.
sharepoint online versioning analysis report using powershell

Please note, this script gets versioning configurations for a given site collection. You can retrieve all site collections, loop through and call the function to get version history analysis for all site collections in SharePoint online.

How to Exclude System Lists and Libraries?
Well, the above script scans all lists and libraries including system lists. Here is the change to exclude all system lists (You can add any missing!")
    
        #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")


        $VersioningData = @()
        Write-host -f Yellow "Processing Site: "$SiteURL
        #Iterate through each list in a site and get versioning configuration
        ForEach($List in $Lists)
        {
            if($ExcludedLists -NotContains $List.Title)
            {
                $VersioningData += New-Object PSObject -Property @{
                'Site' = $SiteURL
                'List' = $List.Title
                'Versioning Enabled' = $List.EnableVersioning
                'Major Versions Limit' = $List.MajorVersionLimit
                'Draft Versions Limit' = $List.MajorWithMinorVersionsLimit
                'Draft Item Security' = $List.DraftVersionVisibility
                'Content Approval Required' = $List.EnableModeration
                'Checkout Required' = $List.ForceCheckout
                }
            }
        }
SharePoint Online: Versioning Analysis on All Lists and Libraries using PowerShell SharePoint Online: Versioning Analysis on All Lists and Libraries using PowerShell Reviewed by Salaudeen Rajack on December 14, 2016 Rating: 5

2 comments:

  1. This report contains all system lists and libraries, such as Master Page Gallery, MicroFeed, Site Assets, Site Pages, Composed Looks, etc. How do I exclude them?

    ReplyDelete
    Replies
    1. Sure, Use $ExcludedLists array as in the updated code above.

      Delete

Please Login and comment to get your questions answered!

Powered by Blogger.