SharePoint Online: actualizar elementos de la lista mediante PowerShell
Requisito: SharePoint Online PowerShell para editar el elemento de la lista.
Actualizar elementos de lista en SharePoint Online mediante PowerShell CSOM Script
Si desea actualizar un elemento de la lista en SharePoint Online, pero no quiere pasar por la interfaz de usuario web cada vez, ya que las actualizaciones ocurren con frecuencia y requieren mucho tiempo, existe una manera de automatizar este proceso con PowerShell. Esta publicación de blog le mostrará cómo actualizar un elemento de lista en SharePoint Online usando PowerShell.
Este es el ejemplo de SharePoint Online PowerShell para actualizar un elemento de la lista:
#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
try{
#Filter and Get the List Items using CAML
$List = $Context.web.Lists.GetByTitle($ListName)
#Get List Item by ID
$ListItem = $List.GetItemById(1)
#Update List Item title
$ListItem["Title"] = "Project Darwin"
$ListItem.Update()
$Context.ExecuteQuery()
write-host "Item Updated!" -foregroundcolor Green
}
catch{
write-host "$($_.Exception.Message)" -foregroundcolor red
}
Esto actualiza el artículo con ID: 1 para la lista proporcionada. También puede utilizar el método $ListItem.SystemUpdate() para preservar los metadatos como los últimos modificados y mantener las versiones intactas.
El script anterior actualiza un elemento de lista en particular. ¿Qué sucede si desea actualizar todos los elementos de la lista?
PowerShell para actualizar todos los elementos de la lista en SharePoint Online:
Los elementos de la lista en SharePoint Online se pueden actualizar mediante PowerShell. Esto se puede hacer recuperando los elementos de la lista y luego actualizando sus propiedades. Aquí está el PowerShell para actualizar los elementos de la lista en SharePoint Online:
#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
$SiteURL="https://crescent.sharepoint.com"
$ListName="Projects"
Try {
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
$Web = $Ctx.web
#Get the List
$List = $Ctx.Web.Lists.GetByTitle($ListName)
$Ctx.Load($List)
$Ctx.ExecuteQuery()
#Get All List items
$ListItemsCAML = New-Object Microsoft.SharePoint.Client.CamlQuery
$ListItemsCAML.ViewXml = "<View Scope='RecursiveAll'></View>"
$ListItems = $List.GetItems($ListItemsCAML)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
Write-host "Total Items Found:"$List.ItemCount
#Iterate through each item and update
Foreach ($ListItem in $ListItems)
{
#Set New value for List column
$ListItem["Reference"] = $ListItem["ID"]
$ListItem.Update()
$Ctx.ExecuteQuery()
}
Write-host "All Items in the List: $ListName Updated Successfully!" -ForegroundColor Green
}
Catch {
write-host -f Red "Error Updating List Items!" $_.Exception.Message
}
SharePoint Online: PnP PowerShell para actualizar el elemento de la lista
PowerShell es un potente lenguaje de secuencias de comandos que se puede utilizar para automatizar una variedad de tareas, incluidas las actualizaciones de elementos de la lista de SharePoint. Para actualizar un elemento de la lista, primero debe conectarse a su sitio de SharePoint mediante PowerShell. Una vez que esté conectado, puede usar el cmdlet Get-PnPListItem para recuperar el elemento de la lista que desea actualizar. Para actualizar el elemento, simplemente use el cmdlet Set-PnPListItem, especificando el ID del elemento de la lista y los nuevos valores para los campos que desea actualizar. Este cmdlet guardará automáticamente sus cambios en SharePoint.
A continuación se explica cómo actualizar los elementos de la lista usando PnP PowerShell en SharePoint Online usando el cmdlet Set-PnPListItem.
#Config Variables
$SiteURL = "https://crescent.sharepoint.com"
$ListName ="Projects"
$ListItemID ="10"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
#Get List Item to Update
$ListItem = Get-PnPListItem -List $ListName -Id $ListItemID -ErrorAction Stop
#Update List Item - Internal Names of the columns : Value
Set-PnPListItem -List $ListName -Identity $ListItem -Values @{"ProjectName" = "SharePoint 2016 Migration"; "ProjectID"="Abj-IT-3021"}
De manera similar, podemos usar el parámetro de consulta para filtrar y obtener un elemento de la lista:
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$ListName ="Projects"
$ListItemTitle ="SharePoint 2016 Migration"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
#Get List Item to Update by Query
$ListItem = Get-PnPListItem -List $ListName -Query "<View><Query><Where><Eq><FieldRef Name='Title'/><Value Type='Text'>$ListItemTitle</Value></Eq></Where></Query></View>" -PageSize 1 -ErrorAction Stop
#Update List Item - Internal Names of the columns : Value
Set-PnPListItem -List $ListName -Identity $ListItem -Values @{"Title" = "SharePoint 2016 Migration V2"; "ProjectID"="Abj-IT-3025"}
Si desea actualizar de forma masiva los elementos de la lista desde un archivo CSV, use: SharePoint Online: actualizar elementos de la lista desde un archivo CSV mediante PowerShell
¿Cómo actualizar campos como búsqueda, selector de personas, metadatos administrados, hipervínculo, etc.?
Los scripts anteriores funcionan bien con tipos de campos simples como líneas de texto individuales, elección, Sí/No, etc. Sin embargo, tenemos que manejarlos de manera diferente para otros tipos de campos como metadatos administrados, hipervínculo, búsqueda, selector de personas, etc. Aquí están mis publicaciones para ayudar:
- SharePoint Online: PowerShell para actualizar el valor del campo de búsqueda
- SharePoint Online: actualice el valor del campo de hipervínculo mediante PowerShell
- SharePoint Online: PowerShell para actualizar el valor del campo de búsqueda
- SharePoint Online: actualice el valor del campo de metadatos administrados mediante PowerShell
- SharePoint Online: actualice los valores de los campos de persona o grupo mediante PowerShell
- SharePoint Online: actualice el valor del campo de elección mediante PowerShell
- SharePoint Online: actualice el valor del campo "Sí/No (casilla de verificación)" mediante PowerShell
- SharePoint Online: PowerShell para actualizar el valor del campo de fecha
