SharePoint Online: PowerShell kullanarak Liste Öğelerini Güncelleştirme


Gereksinim: Liste Öğesini Düzenlemek için SharePoint Online PowerShell.

PowerShell CSOM Komut Dosyasını kullanarak SharePoint Online'daki Liste Öğelerini Güncelleme

SharePoint Online'da bir liste öğesini güncellemek istiyorsanız ancak her seferinde web kullanıcı arayüzünden geçmek istemiyorsanız, güncellemeler sık sık gerçekleştiğinden ve zaman aldığından bu işlemi PowerShell ile otomatikleştirmenin bir yolu vardır. Bu blog gönderisi, PowerShell kullanarak SharePoint Online'da bir liste öğesinin nasıl güncelleştirileceğini gösterecektir.

Bir liste öğesini güncellemek için SharePoint Online PowerShell'in örneği aşağıda verilmiştir:


#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  
} 

Bu, verilen liste için ID: 1 olan Öğeyi günceller. Meta verileri son değiştirildiği gibi korumak ve sürümleri olduğu gibi tutmak için $ListItem.SystemUpdate() yöntemini de kullanabilirsiniz.

Yukarıdaki komut dosyası belirli bir liste öğesini günceller. Listedeki tüm öğeleri güncellemek isterseniz ne olur?

PowerShell, SharePoint Online'daki Tüm Liste Öğelerini Güncellemek İçin:

SharePoint Online'daki liste öğeleri PowerShell kullanılarak güncelleştirilebilir. Bu, liste öğelerini alarak ve ardından özelliklerini güncelleyerek yapılabilir. SharePoint Online'daki liste öğelerini güncellemek için PowerShell'i burada bulabilirsiniz:


#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 Liste Öğesini Güncelleyecek

PowerShell, SharePoint liste öğelerindeki güncellemeler de dahil olmak üzere çeşitli görevleri otomatikleştirmek için kullanılabilecek güçlü bir betik dilidir. Bir liste öğesini güncellemek için öncelikle PowerShell'i kullanarak SharePoint sitenize bağlanmanız gerekir. Bağlandıktan sonra güncellemek istediğiniz liste öğesini almak için Get-PnPListItem cmdlet'ini kullanabilirsiniz. Öğeyi güncellemek için, liste öğesinin kimliğini ve güncellemek istediğiniz alanların yeni değerlerini belirterek Set-PnPListItem cmdlet'ini kullanmanız yeterlidir. Bu cmdlet, değişikliklerinizi otomatik olarak SharePoint'e kaydedecektir.

Set-PnPListItem cmdlet'ini kullanarak SharePoint Online'da PnP PowerShell kullanarak liste öğelerini nasıl güncelleştireceğiniz aşağıda açıklanmıştır.


#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"}

Benzer şekilde, bir liste öğesini filtrelemek ve almak için sorgu parametresini kullanabiliriz:


#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"}

Liste öğelerini bir CSV dosyasından toplu olarak güncellemek istiyorsanız şunu kullanın: SharePoint Online: Liste Öğelerini PowerShell kullanarak CSV Dosyasından Güncelleme

Arama, Kişi Seçici, Yönetilen meta veriler, Köprü vb. Alanlar Nasıl Güncellenir?

Yukarıdaki komut dosyaları, Tek satırlık metin, seçim, Evet/Hayır vb. gibi basit alan türleriyle gayet iyi çalışır. Ancak, Yönetilen meta veriler, Köprü, Arama, Kişi Seçici vb. gibi diğer alan türleri için bunları farklı şekilde ele almamız gerekir. İşte yardımcı olacak yazılarım:

  • SharePoint Online: PowerShell, Arama Alanı Değerini Güncelleştirecek
  • SharePoint Online: PowerShell'i kullanarak Köprü Alanı Değerini Güncelleyin
  • SharePoint Online: PowerShell, Arama Alanı Değerini Güncelleştirecek
  • SharePoint Online: PowerShell'i kullanarak Yönetilen Meta Veri Alanı Değerini Güncelleyin
  • SharePoint Online: PowerShell'i kullanarak Kişi veya Grup Alan Değerlerini Güncelleyin
  • SharePoint Online: PowerShell'i kullanarak Seçim Alanı Değerini Güncelleyin
  • SharePoint Online: PowerShell'i kullanarak "Evet/Hayır (Onay Kutusu)" Alan Değerini Güncelleyin
  • SharePoint Online: PowerShell Tarih Alanı Değerini Güncelleştirecek

İlgili makaleler