SharePoint Online: busque todas las listas grandes y genere informes usando PowerShell
SharePoint Online utiliza el límite estricto de 5000 elementos como umbral de vista de lista. Por lo tanto, debemos estar atentos a las listas grandes en nuestro entorno de SharePoint Online. Esta puede ser una tarea casi imposible si la hace manualmente cuando tiene muchos sitios en su inquilino. En esta publicación de blog, le mostraremos cómo encontrar todas las listas grandes en su entorno con PowerShell de forma rápida y sencilla.
PowerShell Script para buscar todas las listas grandes en SharePoint Online:
Aquí está el script de PowerShell para escanear y obtener todas las listas que superen el límite de 5000 elementos en la colección de sitios de SharePoint Online determinada.
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Config Parameters
$SiteURL="https://crescent.sharepoint.com"
$ReportOutput="C:\temp\LargeLists.csv"
$Threshold=5000
#Exclude system lists
$ExcludedLists = @("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","Search Config List", "Solution Gallery",
"Suggested Content Browser Locations","TaxonomyHiddenList","User Information List","Web Part Gallery","wfpub","wfsvc","Workflow History","Workflow Tasks")
#Delete the Output Report, if exists
if (Test-Path $ReportOutput) { Remove-Item $ReportOutput }
#Setup Credentials
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
Function Get-SPOLargeLists($SiteURL)
{
Write-host "Processing Web:"$SiteURL
Try {
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get the web from given URL and its subsites
$Web = $Ctx.web
$Ctx.Load($Web)
$Ctx.Load($web.Webs)
$Ctx.executeQuery()
#Get all lists from the web
$Lists = $Ctx.Web.Lists
$Ctx.Load($Lists)
$Ctx.ExecuteQuery()
$LargeListsResult = @()
#Loop through each list and get items count
Foreach($List in $Lists)
{
if($ExcludedLists -NotContains $List.Title) #Exclude certain Lists
{
if($List.ItemCount -gt $Threshold)
{
#Get the Result to a psobject
$Result = New-Object PSObject
$Result | Add-Member NoteProperty Title($List.Title)
$Result | Add-Member NoteProperty URL($web.URL)
$Result | Add-Member NoteProperty Count($List.ItemCount)
#Add the result to an Array
$LargeListsResult += $Result
Write-host "Found List '$($List.Title)' with $($List.ItemCount) Items" -f Yellow
}
}
}
#Export the result Array to CSV file
$LargeListsResult | Export-CSV $ReportOutput -NoTypeInformation -Append
#Iterate through each subsite of the current web and call the function recursively
foreach ($Subweb in $web.Webs)
{
#Call the function recursively to process all subsites underneaththe current web
Get-SPOLargeLists($Subweb.url)
}
}
Catch {
write-host -f Red "Error Finding Large Lists!" $_.Exception.Message
}
}
#Call the function with Root site URL
Get-SPOLargeLists -SiteURL $SiteURL
¿Cómo se pueden encontrar listas grandes en todas las colecciones de sitios del inquilino?
PnP PowerShell para buscar listas más grandes en todas las colecciones de sitios
Auditemos todas las colecciones de sitios en el inquilino en busca de listas grandes y generemos un informe utilizando PnP PowerShell.
#Parameters
$TenantAdminURL = "https://crescent-admin.sharepoint.com"
$CSVFile = "C:\Temp\LargeLists.csv"
$Threshold = 5000
$LargeListsInventory = @()
#Function to Audit Larger lists
Function Find-PnPLargeLists($Web)
{
Write-host "Auditing Site:"$Web.Url
#Get All Lists from the Web
$Lists= Get-PnPProperty -ClientObject $Web -Property Lists
$Lists | ForEach-Object {
If($_.ItemCount -gt $Threshold)
{
Write-host -f Yellow "`tFound a Larger list '$($_.Title)' with Items:"$_.ItemCount
$LargeListsInventory += New-Object -TypeName PSObject -Property @{
SiteURL = $Web.Url
ListName = $_.Title
ItemCount = $_.ItemCount
LastModified = $_.LastItemUserModifiedDate
}
}
}
#Export Data to CSV File
$LargeListsInventory | Export-Csv $CSVFile -NoTypeInformation -Append
}
$Cred = Get-credential
#Connect to Tenant Admin Site
Connect-PnPOnline -url $TenantAdminURL -credential $Cred
#Delete the CSVFile if exists
If (Test-Path $CSVFile) { Remove-Item $CSVFile }
#Get All Site collections and Iterate through
$SiteCollections = Get-PnPTenantSite
ForEach($Site in $SiteCollections)
{
#Connect to Site Collection
Connect-PnPOnline -url $Site.URL -credential $Cred
#Get webs of the Site Collection
$Webs = Get-PnPSubWeb -Recurse -IncludeRootWeb
#Get All Webs of the site collection and call the function to find large lists
$Webs | ForEach-Object {Find-PnPLargeLists -Web $_}
}
La salida del guión:
Aquí hay otra publicación local: Encuentre listas grandes en SharePoint usando PowerShell

