Tìm kiếm trang web

SharePoint Online: Cập nhật các mục danh sách bằng PowerShell


Yêu cầu: SharePoint Online PowerShell để chỉnh sửa mục danh sách.

Cập nhật mục danh sách trong SharePoint Online bằng tập lệnh PowerShell CSOM

Nếu bạn muốn cập nhật một mục danh sách trong SharePoint Online nhưng không muốn lần nào cũng phải truy cập vào giao diện người dùng web - vì các bản cập nhật diễn ra thường xuyên và tốn thời gian, Có một cách để tự động hóa quy trình này bằng PowerShell. Bài đăng blog này sẽ chỉ cho bạn cách cập nhật một mục danh sách trong SharePoint Online bằng PowerShell.

Dưới đây là ví dụ về SharePoint Online PowerShell để cập nhật một mục danh sách:


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

Điều này cập nhật Mục có ID: 1 cho danh sách đã cho. Bạn cũng có thể sử dụng phương thức $ListItem.SystemUpdate() để bảo toàn siêu dữ liệu như phiên bản được sửa đổi lần cuối và giữ nguyên các phiên bản.

Đoạn script trên cập nhật một mục danh sách cụ thể. Nếu bạn muốn cập nhật tất cả các mục trong danh sách thì sao?

PowerShell để cập nhật tất cả các mục danh sách trong SharePoint Online:

Danh sách các mục trong SharePoint Online có thể được cập nhật bằng PowerShell. Điều này có thể được thực hiện bằng cách truy xuất các mục trong danh sách và sau đó cập nhật thuộc tính của chúng. Đây là PowerShell để cập nhật các mục danh sách trong 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 để cập nhật mục danh sách

PowerShell là ngôn ngữ kịch bản mạnh mẽ có thể được sử dụng để tự động hóa nhiều tác vụ khác nhau, bao gồm các cập nhật cho các mục danh sách SharePoint. Để cập nhật một mục danh sách, trước tiên bạn phải kết nối với trang SharePoint của mình bằng PowerShell. Sau khi kết nối, bạn có thể sử dụng lệnh ghép ngắn Get-PnPListItem để truy xuất mục danh sách mà bạn muốn cập nhật. Để cập nhật mục, chỉ cần sử dụng lệnh ghép ngắn Set-PnPListItem, chỉ định ID của mục danh sách và các giá trị mới cho các trường bạn muốn cập nhật. Lệnh ghép ngắn này sẽ tự động lưu các thay đổi của bạn trở lại SharePoint.

Dưới đây là cách cập nhật các mục danh sách bằng PnP PowerShell trong SharePoint Online bằng lệnh ghép ngắn 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"}

Tương tự, chúng ta có thể sử dụng tham số truy vấn để lọc và lấy một mục danh sách:


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

Nếu bạn muốn cập nhật hàng loạt mục danh sách từ tệp CSV, hãy sử dụng: SharePoint Online: Cập nhật mục danh sách từ tệp CSV bằng PowerShell

Làm cách nào để cập nhật các trường như Tra cứu, Bộ chọn người, Siêu dữ liệu được quản lý, Siêu liên kết, v.v.?

Các tập lệnh trên chỉ hoạt động tốt với các loại trường đơn giản như Dòng văn bản đơn, lựa chọn, Có/Không, v.v. Tuy nhiên, chúng tôi phải xử lý chúng theo cách khác đối với các loại trường khác như Siêu dữ liệu được quản lý, Siêu liên kết, Tra cứu, Bộ chọn người, v.v. Dưới đây là bài viết của tôi để giúp đỡ:

  • SharePoint Online: PowerShell để cập nhật giá trị trường tra cứu
  • SharePoint Online: Cập nhật giá trị trường siêu kết nối bằng PowerShell
  • SharePoint Online: PowerShell để cập nhật giá trị trường tra cứu
  • SharePoint Online: Cập nhật Giá trị Trường Siêu dữ liệu được Quản lý bằng PowerShell
  • SharePoint Online: Cập nhật giá trị trường của người hoặc nhóm bằng PowerShell
  • SharePoint Online: Cập nhật giá trị trường lựa chọn bằng PowerShell
  • SharePoint Online: Cập nhật Giá trị trường “Có/Không (Hộp kiểm)” bằng PowerShell
  • SharePoint Online: PowerShell để cập nhật giá trị trường ngày

Bài viết liên quan