SharePoint Online: obtenga todas las listas y bibliotecas usando PowerShell
¿Está buscando una manera de obtener un inventario de todas las listas y bibliotecas en su sitio de SharePoint Online? Esto puede resultar útil para realizar auditorías o simplemente para obtener una descripción general de lo que hay en su sitio. En este artículo, le mostraremos cómo usar PowerShell para obtener información detallada sobre todas las listas y bibliotecas.
SharePoint Online: PowerShell para obtener todas las listas
Mientras trabaja con SharePoint Online, es posible que tenga que recorrer todas las listas de un sitio. Aquí está el script de PowerShell para obtener todas las listas y bibliotecas del sitio de SharePoint Online determinado:
#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"
#Variables for Processing
$SiteUrl = "https://crescent.sharepoint.com/sites/sales"
$UserName="salaudeen@crescent.com"
$Password ="Password goes here"
#Setup Credentials to connect
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force))
Try {
#Set up the context
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Context.Credentials = $credentials
#sharepoint online powershell get all lists
$Lists = $Context.web.Lists
$Context.Load($Lists)
$Context.ExecuteQuery()
#Iterate through each list in a site
ForEach($List in $Lists)
{
#Get the List Name
Write-host $List.Title
}
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
Este PowerShell obtiene todos los nombres de las listas del sitio de SharePoint Online determinado.
Obtener el inventario de todas las listas en un sitio de SharePoint Online y exportarlo a CSV
Profundicemos un poco más, obtengamos todas las propiedades de la lista y exportémoslas a un archivo CSV:
#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 Variable
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$CSVPath = "C:\Temp\ListInventory.csv"
#Setup Credentials to connect
$Cred = Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
Try {
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get Lists from the site
$Web = $Ctx.Web
$Lists = $Web.Lists
$Ctx.Load($Web)
$Ctx.Load($Lists)
$Ctx.ExecuteQuery()
$ListDataCollection = @()
#Get List details
ForEach ($List in $Lists)
{
$ListData = New-Object PSObject -Property ([Ordered] @{
ListName = $List.Title
Description = $List.Description
ItemCount = $List.ItemCount
BaseTemplateID = $List.BaseTemplate
Created = $List.Created
BaseType = $List.BaseType
ContentTypesEnabled = $List.ContentTypesEnabled
Hidden = $List.Hidden
ListId = $List.Id
IsCatalog = $List.IsCatalog
LastItemDeletedDate = $List.LastItemDeletedDate
LastItemModifiedDate = $List.LastItemModifiedDate
ParentWebUrl = $List.ParentWebUrl
VersioningEnabled = $List.EnableVersioning
})
$ListDataCollection += $ListData
}
$ListDataCollection
#Export List data to CSV
$ListDataCollection | Export-Csv -Path $CSVPath -Force -NoTypeInformation
Write-host -f Green "List Statistics Exported to CSV!"
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}
SharePoint Online: script de PowerShell para recorrer en iteración todas las listas y bibliotecas de una colección de sitios
Ahora, conviertamos este código en una función reutilizable y obtengamos listas y bibliotecas de todos los sitios y subsitios del sitio determinado.
#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"
#Variables for Processing
$SiteUrl = "https://crescent.sharepoint.com/sites/sales"
#Get Credentials to connect
$Cred= Get-Credential
#Setup Credentials to connect
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
Try {
#Function to Get all lists from the web
Function Get-SPOList($Web)
{
#Get All Lists from the web
$Lists = $Web.Lists
$Context.Load($Lists)
$Context.ExecuteQuery()
#Get all lists from the web
ForEach($List in $Lists)
{
#Get the List Name
Write-host $List.Title
}
}
#Function to get all webs from given URL
Function Get-SPOWeb($WebURL)
{
#Set up the context
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($WebURL)
$Context.Credentials = $Credentials
$Web = $context.Web
$Context.Load($web)
#Get all immediate subsites of the site
$Context.Load($web.Webs)
$Context.executeQuery()
#Call the function to Get Lists of the web
Write-host "Processing Web :"$Web.URL
Get-SPOList $Web
#Iterate through each subsite in the current web
foreach ($Subweb in $web.Webs)
{
#Call the function recursively to process all subsites underneaththe current web
Get-SPOWeb($SubWeb.URL)
}
}
#Call the function to get all sites
Get-SPOWeb $SiteUrl
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
Salida del guión:
PnP PowerShell para obtener todas las listas y bibliotecas de una colección de sitios
Obtengamos el inventario de todas las listas y bibliotecas de todos los sitios en una colección de sitios y exportémoslo a un archivo CSV usando PnP PowerShell.
#Function to Get Lists and Libraries of a web
Function Get-SPOSiteInventory([Microsoft.SharePoint.Client.Web]$Web)
{
Write-host -f Yellow "Getting Lists and Libraries from site:" $Web.URL
#Get all lists and libraries
$SiteInventory= @()
$Lists= Get-PnPProperty -ClientObject $Web -Property Lists
foreach ($List in $Lists)
{
$Data = new-object PSObject
$Data | Add-member NoteProperty -Name "Site Name" -Value $Web.Title
$Data | Add-member NoteProperty -Name "Site URL" -Value $Web.Url
$Data | Add-member NoteProperty -Name "List Title" -Value $List.Title
$Data | Add-member NoteProperty -Name "List URL" -Value $List.RootFolder.ServerRelativeUrl
$Data | Add-member NoteProperty -Name "List Item Count" -Value $List.ItemCount
$Data | Add-member NoteProperty -Name "Last Modified" -Value $List.LastItemModifiedDate
$SiteInventory += $Data
}
#Get All Subwebs
$SubWebs = Get-PnPProperty -ClientObject $Web -Property Webs
Foreach ($Web in $SubWebs)
{
$SiteInventory+= Get-SPOSiteInventory -Web $Web
}
Return $SiteInventory
}
#Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$CSVFile = "C:\temp\SiteData.csv"
Try {
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get the Root Web
$Web = Get-PnPWeb
#Call the function and export results to CSV file
Get-SPOSiteInventory -Web $Web | Export-CSV $CSVFile -NoTypeInformation
}
Catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
Para obtener todas las bibliotecas de documentos en SharePoint Online usando PowerShell, use: SharePoint Online: PowerShell para enumerar todas las bibliotecas de documentos
