Find Large SharePoint Lists & Generate Report with PowerShell
Requirement: Find large lists in SharePoint using PowerShell! Large lists are potential threats to SharePoint’s performance. So, I wanted to audit the SharePoint environment to find all large lists which have items more than 2000 and generate a report.
PowerShell to Find Large Lists and Generate a Report in SharePoint:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#For Output file generation
$OutputFN = "LargeListsData.csv"
#delete the file, If already exist!
if (Test-Path $OutputFN)
{
Remove-Item $OutputFN
}
#Write the CSV Headers
Add-Content $OutputFN "List Name , site Collection , Site URL , Item count"
#Get the Web Application URL
$WebAppURL = Read-Host "Enter the Web Application URL:"
$SPwebApp = Get-SPWebApplication $WebAppURL
#Loop through All Site collections, Sites, Lists
foreach($SPsite in $SPwebApp.Sites)
{
foreach($SPweb in $SPSite.AllWebs)
{
foreach($SPlist in $SPweb.Lists)
{
if($splist.ItemCount -gt 2000)
{
$content = $SPlist.Title + "," + $SPsite.Rootweb.Title +"," + $SPweb.URL + "," + $SPlist.ItemCount
add-content $OutputFN $content
}
}
$SPweb.Dispose()
}
$SPsite.Dispose()
}
write-host "Large List report generated successfully!"
PowerShell script to find large lists and export to CSV:
Let’s do it in one line! Here is the PowerShell one-liner to find Large lists (lists with more than 2000 items) and export to CSV:
Get-SPWebApplication https://intranet.crescent.com | Get-SPSite -Limit All | Get-SPWeb -Limit All `
| Foreach-object { $_.Lists | Select @{N="Url";E={$_.ParentWeb.url+$_.RootFolder.Url} }, Title, ItemCount } `
| Where {$_.ItemCount -gt 2000} | sort ItemCount -Descending | Export-csv -Path "c:\largeLists.csv" -NoTypeInformation
Here is my other article written in C# to find large lists in SharePoint: Find Large Lists in SharePoint
Never mind… I found you have already covered this in a later post.
Really good stuff!
Thanks.
This is very useful. How can I change this to find large documents? I’d like to iterate through every list/library and find files larger than xxxMB.
Thanks Sal!
Hello,
When I tried to use this script. It askde follwing parmeter from me :
cmdlet Add-Content at command pipeline position 1
Supply values for the following parameters:
Value[0]:
Please help me and thanks in advance.
Yogesh
Yogesh,
I’ve Seen this error when we call the function without a value to the Name parameter.
You can try the Operator “>>” to append to text file instead.
E.g. $SPlist.Title + “,” + $SPsite.Rootweb.Title +”,” + $SPweb.URL + “,” + $SPlist.ItemCount >> LargeListsData.csv