Búsqueda de sitios web

SharePoint Online: actualización masiva de todos los elementos de la lista grande mediante PowerShell


Requisito: Actualización masiva de elementos de la lista de SharePoint Online mediante PowerShell.

¿Cómo actualizar una gran cantidad de elementos de la lista de forma masiva usando PowerShell?

¿Está buscando una manera de actualizar rápidamente todos los elementos de una lista de SharePoint Online? Quizás sea necesario actualizar el valor de una columna para todos los elementos de la lista. Este artículo le mostrará cómo utilizar el script de PowerShell para actualizar rápidamente de forma masiva todos los elementos de la lista en SharePoint Online.

Si bien las listas con <5000 elementos se pueden actualizar usando el enfoque de mi otra publicación, Actualizar la lista de SharePoint Online usando PowerShell, ¿qué tal si actualizamos listas grandes con más de 5000 elementos de lista y evitamos "El intento de operación está prohibido porque excede el umbral de vista de lista?" ejecutado por el administrador.” ¿Problema en PowerShell?

Bueno, las listas grandes deben actualizarse en lotes. Aquí está mi secuencia de comandos de PowerShell para actualizar listas grandes de forma masiva: Esta secuencia de comandos de PowerShell actualiza el valor del campo "Título" de "Nombre de archivo".


#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"
  
#Parameters
$SiteURL = "https://Crescent.sharepoint.com"
$ListName = "Documents"
$UserName = "Salaudeen@CrescentTech.com"
$Password = "Password123456"
$SecurePassword= $Password | ConvertTo-SecureString -AsPlainText -Force
$BatchSize =100
 
#Setup the Context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)
 
#Get the List
$List = $Ctx.Web.Lists.GetByTitle($ListName)
$Ctx.Load($List)
$Ctx.ExecuteQuery()

#sharepoint online powershell caml batch update
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml = "@
    <View Scope='RecursiveAll'> 
        <Query> 
             <OrderBy><FieldRef Name='ID' Ascending='TRUE'/></OrderBy>
        </Query>
        <RowLimit>$BatchSize</RowLimit>
    </View>"

#Get List Items in Batches
Do
{
    #Get List Items 
    $ListItems = $List.GetItems($Query)
    $Ctx.Load($ListItems)
    $Ctx.ExecuteQuery()
    $ListItems.Count

    #Update Postion of the ListItemCollectionPosition
    $Query.ListItemCollectionPosition = $ListItems.ListItemCollectionPosition

    If ($ListItems.Count -eq 0) { Break }
    
    #Update List Item
    ForEach($Item in $ListItems)
    {
        #Update List Item Title as File Name
        $Item["Title"]= $Item["FileLeafRef"]
        $Item.Update()
    }
    $Ctx.ExecuteQuery()
}While ($Query.ListItemCollectionPosition -ne $null)

Si desea actualizar de forma masiva varios elementos desde un archivo CSV, utilice: Actualizar la lista de SharePoint Online desde un CSV mediante PowerShell

PnP PowerShell para actualizar todos los elementos de una lista de SharePoint Online

Actualizar varios elementos de la lista usando PnP PowerShell es relativamente más fácil que el script CSOM anterior (¡Ese es el poder de PnP!).


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/PMO"
$ListName = "Projects"

#Connect to SharePoint Online site
Connect-PnPOnline $SiteURL -Interactive

#Get all Items from the list
$ListItems = Get-PnPListItem -List $ListName -PageSize 2000

#Update all list Items
ForEach($Item in $ListItems)
{
    #Update List Item Title as its ID value
    Set-PnPListItem -List $ListName -Identity $Item.Id -Values @{"Title"= $Item.Id} | Out-Null
    Write-host "Updated Item:"$Item.ID    
}

¡También puede utilizar el método New-PnPBatch de PnP PowerShell para actualizar de forma masiva los elementos de la lista más rápido! Aquí está la referencia: SharePoint Online: realice operaciones masivas con New-PnPBatch en PowerShell

Artículos relacionados