PowerShell scripts are very useful to generate some amazing reports, recently I have written a PowerShell script which retrieves all lists and libraries for a SharePoint site collection under all sub sites with item count and versioning enabled.

This is a report which can be very useful when you are going to the delta/cutover migration and you can get the details for list and libraries recently modified and also item count.

Use this report to compare list count including item count in each list for different sites (useful in migrations).

You can download the script directly from GitHub repository.

Include the reference SharePoint PowerShell.

if ((Get-PSSnapin “Microsoft.SharePoint.PowerShell” -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin “Microsoft.SharePoint.PowerShell”
}

I am going to create a function name “GetListInventory” which will take one site Url as parameter.

function GetListInventory($siteUrl)
{
$webApp = Get-SPWebApplication $siteUrl

$SiteDetail = @();

Foreach ($web in $webApp | Get-SPSite -Limit All | Get-SPWeb -Limit All)
{
Write-host “Processing site $web.Name…”

foreach($list in $web.lists)
{
$row = new-object PSObject
Add-member -inputObject $row -memberType NoteProperty -Name “Site Name” -value $web.Name
Add-member -inputObject $row -memberType NoteProperty -Name “URL” -value $web.Url
Add-member -inputObject $row -memberType NoteProperty -Name “List Title” -value $List.Title
Add-member -inputObject $row -memberType NoteProperty -Name “List Item Count” -value $list.Items.Count
Add-member -inputObject $row -memberType NoteProperty -Name “Last Modified Date” -value $List.LastItemModifiedDate
if ($list.EnableVersioning -eq $TRUE)
{
Add-member -inputObject $row -memberType NoteProperty -Name “Versioning” -value “Yes”
}else
{
Add-member -inputObject $row -memberType NoteProperty -Name “Versioning” -value “No”

}
$SiteDetail += $row;
}
}
$SiteDetail
}

I have used list.Items.Count property instead of Lites.ItemCount.

Difference between List.items.Count and List.ItemCount

Now you have compiled the above script, call the function to generate the list inventory. You can either print output on Out-GridView or in a CSV file using Out-File.

GetListInventory “http://SP2016Farm” | Out-GridView

SharePoint List Inventory

In above report, you can see the Site title, site URL, List name, no. of items, Last Modified Date and versioning which will be yes if enabled

But it will be very useful if you copy the content from above report into excel or generate a csv report will using Out-file:

GetListInventory “http://SP2016Farm” |  Out-File “E:\Reports\ListInventory.csv”

SharePoint List Inventory Out-File

Using excel you  can apply different sorting orders and filters in excel like to get the list with maximum no. of items, latest or lest modified list, lists with versioning enabled or for any specific site. These types of filters are quite easy in excel. Instead of applying these filters in PowerShell, generate lists inventory like this and then perform different actions on it.

Important: I have tested this script in SharePoint 2010, SharePoint 2013 and SharePoint 2016.

Adnan, a distinguished professional, boasts an impressive track record as a Microsoft MVP, having achieved this prestigious recognition for the eighth consecutive year since 2015. With an extensive career spanning over 18 years, Adnan has honed his expertise in various domains, notably excelling in SharePoint, Microsoft 365, Microsoft Teams, the .Net Platform, and Microsoft BI. Presently, he holds the esteemed position of Senior Microsoft Consultant at Olive + Goose. Notably, Adnan served as the MCT Regional Lead for the Pakistan Chapter from 2012 to 2017, showcasing his leadership and commitment to fostering growth within the tech community. His journey in the realm of SharePoint spans 14 years, during which he has undertaken diverse projects involving both intranet and internet solutions for both private and government sectors. His impact has transcended geographical boundaries, leaving a mark on projects in the United States and the Gulf region, often collaborating with Fortune 500 companies. Beyond his roles, Adnan is a dedicated educator, sharing his insights and knowledge as a trainer. He also passionately advocates for technology, frequently engaging with the community through speaking engagements in various forums. His multifaceted contributions exemplify his dedication to the tech field and his role in driving its evolution.

Leave a Reply

2 replies on “Get SharePoint List Inventory using PowerShell”