SharePoint Online: Agregar, actualizar o eliminar de forma masiva más rápido con New-PnPBatch en PowerShell
El módulo PnP PowerShell brinda la capacidad de realizar operaciones masivas en lotes en SharePoint Online utilizando el cmdlet New-PnPBatch. Esto es extremadamente útil cuando se trata de listas más grandes con operaciones de creación, edición o eliminación. Las operaciones de PnP Batch se aceleran, reducen relativamente el tiempo de ejecución y ofrecen un rendimiento más rápido. Ahora puede realizar este tipo de operaciones de forma masiva en lugar de ejecutar cada comando individualmente.
Agregue elementos de la lista de SharePoint Online de forma masiva:
Intenté insertar 1000 elementos en una lista y solo me llevó 25 segundos con la nueva función por lotes de PnP PowerShell. Mientras que en un método Add-PnPListItem habitual, se necesitaron 250 segundos para agregar 1000 elementos a la lista. Aquí hay un ejemplo:
$SiteURL = "https://Crescent.sharepoint.com/sites/Operations"
$ListName = "Random"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Create a New Batch
$Batch = New-PnPBatch
#Add List Items
For($i=1; $i-le 1000; $i++)
{
Add-PnPListItem -List $ListName -Values @{"Title" = $i} -Batch $Batch
}
#Send Batch to the server
Invoke-PnPBatch -Batch $Batch
Aquí, en lugar de enviar cada solicitud directamente al sitio de SharePoint Online con el cmdlet Add-PnPListItem, las agrupamos con la variable $Batch y luego el lote se envía a SharePoint Online mediante el cmdlet Invoke-PnPBatch.
Actualice los elementos de la lista de SharePoint Online en lotes:
El tiempo de procesamiento puede ser una pesadilla cuando se trata de una gran cantidad de datos. Afortunadamente, los cmdlets por lotes PnP PowerShell reducen el tiempo de ejecución aproximadamente 10 veces en comparación con los métodos convencionales. El método por lotes no solo reduce el tiempo de ejecución sino que también envía una menor cantidad de solicitudes al servidor para que pueda evitar el problema de limitación en SharePoint Online.
#Create a New Batch
$Batch = New-PnPBatch
#Update List Items
For($i=1; $i-le 1000; $i++)
{
Set-PnPListItem -List $ListName -Identity $i -Values @{"Title" = "Updated Item:"+$i} -Batch $Batch
}
#Send Batch to the server
Invoke-PnPBatch -Batch $Batch
¿Cómo eliminar elementos de la lista de forma masiva en lotes?
Se necesitaron alrededor de 50 segundos para eliminar 1000 elementos de una lista. Vale la pena mencionar que no todos los cmdlets admiten la operación por lotes en la actualidad, pero supongo que pronto se agregará soporte para el procesamiento por lotes en los cmdlets relevantes.
$SiteURL = "https://Crescent.sharepoint.com/sites/Operations"
$ListName = "Random"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get List Items to Delete
$ListItems = Get-PnPListItem -List $ListName -PageSize 500
#Create a New Batch
$Batch = New-PnPBatch
#Delete All List Items
ForEach($Item in $ListItems)
{
Remove-PnPListItem -List $ListName -Identity $Item.ID -Batch $Batch
}
#Send Batch to the server
Invoke-PnPBatch -Batch $Batch
¿Aparece el error "Nuevo-PnPBatch no reconocido"? Bueno, ¡actualiza tu módulo PowerShell! Si desea crear una gran cantidad de archivos ficticios con fines de prueba, utilice: ¿Cómo crear archivos de forma masiva en SharePoint Online usando PowerShell?
