SharePoint Online: obtenga todos los elementos de la lista mediante el script de PowerShell
Requisito: SharePoint Online PowerShell para obtener elementos de la lista.
SharePoint Online: PowerShell para obtener todos los elementos de la lista
PowerShell es un potente lenguaje de secuencias de comandos que se puede utilizar para automatizar tareas. En esta publicación de blog, le mostraremos cómo usar PowerShell para consultar elementos en una lista de SharePoint Online. Cubriremos los conceptos básicos de cómo comenzar y brindaremos algunos ejemplos de PowerShell sobre cómo consultar elementos de la lista en SharePoint Online. ¡Empecemos!
¿Cómo obtener elementos de una lista de SharePoint Online usando PowerShell?
¿Está buscando una forma rápida y sencilla de obtener un elemento de lista en SharePoint Online? Bueno, aquí hay un ejemplo de script CSOM de PowerShell para obtener todos los elementos de la lista o biblioteca dada, incluidos los elementos de todas las subcarpetas, de forma recursiva.
#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"
$ListName="Projects"
$UserName="admin@crescent.com"
$Password ="Password goes here"
#Setup Credentials to connect
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force))
#Set up the context
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Context.Credentials = $credentials
#Get the List
$List = $Context.web.Lists.GetByTitle($ListName)
#sharepoint online get list items powershell
$ListItems = $List.GetItems([Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery())
$Context.Load($ListItems)
$Context.ExecuteQuery()
write-host "Total Number of List Items found:"$ListItems.Count
#Loop through each item
$ListItems | ForEach-Object {
#Get the Title field value
write-host $_["Title"]
}
SharePoint Online: PowerShell para obtener elementos de la lista por ID
Si desea obtener un único elemento de la lista por su ID, utilice lo siguiente:
#Get the List Item
$List = $Context.web.Lists.GetByTitle($ListName)
$ListItem = $List.GetItemById(15)
$Context.Load($ListItem)
$Context.ExecuteQuery()
Una vez que obtenga el artículo, puede obtener las propiedades del artículo de la lista como:
#sharepoint online powershell get list item properties
write-host $ListItem["Title"]
PowerShell para filtrar y obtener elementos de lista con CAML:
¿Qué tal filtrar y consultar elementos de lista usando CAML Query? A continuación se explica cómo obtener elementos de una lista de SharePoint Online mediante PowerShell.
SharePoint Online: PowerShell para obtener un elemento de lista por título
A continuación se explica cómo obtener elementos de lista usando PowerShell en SharePoint Online filtrados por consultas CAML:
#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/sites/marketing"
$ListName="Project Tasks"
$ItemTitle = "Project Kickoff"
#Setup Credentials to connect
$Cred = Get-Credential
Try {
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
#Get the web and List
$Web=$Ctx.Web
$List=$web.Lists.GetByTitle($ListName)
#Get a List item by its Title
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml = "@
<View>
<Query>
<Where>
<Eq>
<FieldRef Name='Title'/><Value Type='Text'>$ItemTitle</Value>
</Eq>
</Where>
</Query>
</View>"
#Get All List Items matching the query
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
Write-host "Total List Items:" $ListItems.count
#Loop through each file in the library
Foreach($Item in $ListItems)
{
Write-host -f Green $Item["Title"]
}
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}
Este PowerShell obtiene un elemento de lista por título en SharePoint Online. De manera similar, puede filtrar cualquier otro tipo de datos como menús desplegables, etc.
#Filter and Get the List Items using CAML
$List = $Context.web.Lists.GetByTitle($ListName)
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery;
$Query.ViewXml = "<View><Query><Where><Eq><FieldRef Name='Priority' /><Value Type='Choice'>(3) High</Value></Eq></Where></Query></View>"
#sharepoint online powershell query list items
$ListItems = $list.GetItems($Query);
$Context.Load($ListItems)
$Context.ExecuteQuery()
#sharepoint online powershell loop through list items
$ListItems | ForEach-Object {
#Get the Title field value
write-host $_["Title"]
}
PowerShell para filtrar carpetas y obtener todos los elementos de la lista
Filtremos todos los objetos Carpeta de la colección "ListItems" y obtengamos solo archivos.
#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"
$LibraryName="Project Docs"
#Setup Credentials to connect
$Cred = Get-Credential
$Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
Try {
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Cred
#Get the web and Library
$Web=$Ctx.Web
$List=$web.Lists.GetByTitle($LibraryName)
#Get all List items from the library - Exclude "Folder" objects
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml="<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='FSObjType'/><Value Type='Integer'>0</Value></Eq></Where></Query></View>"
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
Write-host "Total List Items:" $ListItems.count
#Loop through each file in the library
Foreach($Item in $ListItems)
{
Write-host -f Green $Item["Title"]
}
}
Catch {
write-host -f Red "Error deleting versions!" $_.Exception.Message
}
SharePoint Online: PnP PowerShell para obtener elementos de la lista mediante el cmdlet Get-PnPListItem
¿Cómo obtengo elementos de una lista de SharePoint Online en PowerShell? Aquí está PnP PowerShell para obtener todos los elementos de la lista de una lista de SharePoint Online mediante el cmdlet Get-PnPListItem. Asegúrese de que el módulo PnP PowerShell esté instalado en su sistema y de que tenga permiso para acceder al sitio de SharePoint antes de ejecutar este script de PowerShell.
#Config Variables
$SiteURL="https://Crescent.sharepoint.com/sites/marketing"
$ListName= "Documents"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
#sharepoint online pnp powershell get list items
$ListItems = Get-PnPListItem -List $ListName -Fields "Title" -PageSize 2000
#Loop through each Item
foreach($ListItem in $ListItems)
{
Write-Host "Title:" $ListItem["Title"]
}
Este script obtiene todos los archivos y carpetas como elementos de la lista "Documentos" en la colección de sitios de SharePoint Online determinada. En listas más grandes, asegúrese de utilizar el parámetro "Tamaño de página". De lo contrario, puede encontrar "Get-PnPListItem: el intento de operación está prohibido porque excede el umbral de vista de lista". mensaje de error. Además, el cmdlet Get-PnPListItem con el parámetro "Query" con la condición "Dónde" o "FolderServerRelativeurl" falla en listas más grandes. El “Tamaño de página” no tiene ningún efecto sobre estos parámetros a día de hoy.
Get-PnPListItem -List $ListName -Fields "Title" -PageSize 2000
Obtener elementos de lista usando PnP PowerShell en SharePoint Online
De manera similar, puede usar el parámetro -Query para filtrar y obtener elementos de la lista en SharePoint Online con PowerShell:
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$ListName = "Projects"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
#CAML Query to Filter List Items
$Query = "<View><Query><Where><Eq><FieldRef Name='ProjectStatus' /><Value Type='Choice'>Active</Value></Eq></Where></Query></View>"
#get all list items using powershell sharepoint online - matching given query
$ListItems = Get-PnPListItem -List $ListName -Query $Query
#Loop through each Item
foreach($ListItem in $ListItems)
{
Write-Host "Id :" $ListItem["ID"]
Write-Host "Title :" $ListItem["Title"]
}
Uso del bloque de secuencias de comandos para recuperar elementos de la lista desde SharePoint Online
A continuación se explica cómo utilizar el bloque de script y una barra de progreso para recuperar elementos de una lista de SharePoint Online.
$List= Get-PnPList $ListName
$global:counter = 0;
$ListItems = Get-PnPListItem -List $ListName -PageSize 2000 -Fields "Title" -ScriptBlock { Param($items) $global:counter += $items.Count; Write-Progress -PercentComplete ($global:Counter / ($List.ItemCount) * 100) -Activity "Getting List Items of '$($List.Title)'" -Status "Processing Items $global:Counter to $($List.ItemCount)";}
Write-host $ListItems.Count
De manera similar, puede obtener elementos de lista con campos particulares especificando el elemento ViewFields.
#CAML Query to Get List Items with Specific fields
$Query = "<View><ViewFields><FieldRef Name='Title'/></ViewFields></View>"
#sharepoint online pnp powershell get list items
$ListItems = Get-PnPListItem -List $ListName -PageSize 2000 -Query $Query
Preguntas frecuentes:
¿Cómo obtengo más de 5000 elementos de una lista de SharePoint?
Suponga que tiene una lista grande con >5000 elementos. En ese caso, es posible que tenga que procesar por lotes los elementos de la lista para superar el límite: "El intento de operación está prohibido porque excede el umbral de vista de lista impuesto por el administrador". PowerShell para obtener todos los elementos de lista de listas grandes (>5000 elementos) en SharePoint Online
También puede usar Get-PnPListItem con el parámetro -PageSize.
¿Cómo exporto una lista de SharePoint desde PowerShell?
Para exportar una lista de SharePoint Online a un archivo CSV en PowerShell, use este script de PowerShell: SharePoint Online PowerShell para exportar elementos de lista a CSV
¿Cómo obtener el recuento de elementos en la lista de SharePoint usando PowerShell?
Utilice la propiedad "List.ItemCount" para recuperar el número total de elementos en una lista o biblioteca de documentos de SharePoint Online. Aquí hay un script de PowerShell de ejemplo para obtener el recuento de elementos de una lista de SharePoint Online: SharePoint Online PowerShell para obtener el recuento de elementos de la lista
¿Cómo obtengo una lista de archivos de una biblioteca de documentos en SharePoint usando PowerShell?
Para recuperar todos los archivos de una biblioteca de documentos de SharePoint Online, utilice el cmdlet PnP PowerShell:”Get-PnPListItem -List “Nombre de biblioteca”. Aquí hay un script de ejemplo: SharePoint Online: obtenga una lista de archivos en una biblioteca de documentos usando PowerShell
