SharePoint Migration – Large List Details

This is article is next in the series of articles on “SharePoint Migration & Planning” Strategies. You can reach out to the previous articles in this series using the following links:

SharePoint Migration: Planning & Guidance On SharePoint Objects
SharePoint Migration – Export IIS Settings
SharePoint Migration – Export Alternate Access Mapping
SharePoint Migration – Export Content Database Details

In this article we will look for the PowerShell Scripts to export “SharePoint Large Lists” Report from source SharePoint Farm. This information will be helpful to track all the lists which contains more than “2000” items in it and provisioned in SharePoint Farm.

In Step 1 we will add the PowerShell Snapin to PowerShell Script as usual.


In Step 2 we define a function and initiate the export CSV file with Column Headers. For this demo I am exporting a few important properties like “WebApp Name, WebApp Url, Site Collection Url, Site Name, Site URL, List Name, List Item Count” but you may query all possible properties as you deemed fit

In Step 3 we execute the “Get-SPWebApplication” cmdlet to query the “Sites” & “Webs” Properties

In Step 4 we loop through the Sites Collection for a specific Web Application

In Step 5 we loop through the Webs Collection for a specific Site

In Step 6 we loop through the Lists Collection for a specific Web

In Step 7 we will filter all those lists which are having over “2000” items in them

In Step 8 we add the content of properties for each of the list to the CSV file

Always remember to dispose SharePoint Site & Web objects to avoid memory leaks. In Step 9 we will call the “dispose()” method


In Step 10 we will initialize path variables for export file & web applications. You can further extend this step by adding little bit of more automation flavor to make it more dynamic by reading parameters from input settings file


Once this script get executed successfully, it will export the Large List Details in a CSV File as shown below in Step 11


We can see the exported details as shown below in Step 12


Code Reference:

Add-PSSnapin "Microsoft.SharePoint.PowerShell"Add-PSSnapin "Microsoft.SharePoint.PowerShell"
function Get-Large-List-Report(){ Try {        if (Test-Path $settingsFilePath)        {            Remove-Item $settingsFilePath        }
        Add-Content $settingsFilePath "WebApp Name,WebApp Url,Site Collection Url,Site Name,Site URL,List Name,List Item Count"
        $spWebApplication = Get-SPWebapplication $webApplicationUrl
        foreach($spSite in $spWebApplication.sites)        {            foreach($spWeb in $spSite.AllWebs)            {                foreach($spList in $spWeb.Lists)                {                    if($spList.ItemCount -gt 2000)                    {                        $content = $spWebApplication.Name + "," + $spWebApplication.Url + "," + $spSite.Url + "," + $spWeb.Title + "," + $spWeb.Url + "," + $spList.Title + "," +  $spList.ItemCount                        Add-content $settingsFilePath $content                    }                }                $spWeb.dispose()            }            $spSite.dispose()        }    }    Catch {         Write-Host $Error -ForegroundColor Yellow }}
$settingsFilePath = "<CSV File Path>"$webApplicationUrl = "<Web Application Url>"

That is all for this demo.

Hope you find it helpful.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s