当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:使用 PowerShell 更新超链接字段值

作者:精品下载站 日期:2024-12-14 14:40:33 浏览:13 分类:玩电脑

SharePoint Online:使用 PowerShell 更新超链接字段值


要求:使用 PowerShell 更新 SharePoint Online 中的超链接字段值。

[玩转系统] SharePoint Online:使用 PowerShell 更新超链接字段值

SharePoint Online PowerShell 更新超链接字段

超链接字段可用于链接文档、列表项、页面等。在某些情况下,您可能需要更新 SharePoint Online 列表中现有项目的超链接 URL 或链接文本。本博文将向您展示如何使用 PowerShell 脚本更新 SharePoint 中的超链接字段值。

让我们使用 PowerShell 将新链接项添加到链接列表中:


#Load SharePoint Online Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Variables
$SiteURL="https://crescent.sharepoint.com"
$ListName = "Quick Links"
$FieldName = "URL"

#Get Credentials to connect
$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

#Get the List
$List = $Ctx.Web.lists.GetByTitle($ListName)

#Add New Item to Link list
If($List -ne $Null)
{
    $ListItemInfo = New-Object Microsoft.SharePoint.Client.ListItemCreationInformation
    $ListItem = $List.AddItem($ListItemInfo)
    $ListItem["Title"] = "Support Center"

    #Set Hyperlink field properties    
    $Link = New-Object Microsoft.SharePoint.Client.FieldUrlValue
    $Link.Url = "https://Crescent.sharepoint.com/sites/support"
    $Link.Description = "Support Center URL"

    #Update Hyperlink Field
    $ListItem[$FieldName] = [Microsoft.SharePoint.Client.FieldUrlValue]$Link
    $ListItem.Update()
    $Ctx.ExecuteQuery()
 
    Write-host "New Item Added to Link List!" -ForegroundColor Green
}

使用 PowerShell 查找和替换超链接:

同样,我们可以使用 SharePoint Online 中的 PowerShell 更新现有的超链接字段值。让我们将 URL“/sites/support”的所有链接列表项更新为“/sites/supportV2”。


#Load SharePoint Online Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Variables
$SiteURL="https://crescent.sharepoint.com"
$ListName = "Quick Links"
$FieldName = "URL"

#Hyperlink Field Values
$HyperLinkValue = "Support Center"
$HyperLinkURL = "/sites/support" #Provide FULL URL for External URLs
$HyperLinkNewURL = "/sites/supportV2"

#Get Credentials to connect
$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

#Get the List
$List = $Ctx.Web.lists.GetByTitle($ListName)

#Define the CAML Query to Filter by Hyperlink value and Get List Item
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml = "@
<View>
    <Query>
        <Where>
            <Eq >
                <FieldRef Name='$FieldName' /><Value Type='URL'>$HyperLinkURL</Value>
            </Contains >
        </Eq>
    </Query>
</View>"
 
#Get All List Items matching the query
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()

#Update the List Item's Hyperlink Field value
If($ListItems.Count -gt 0)
{
    ForEach($Item in $ListItems)
    {
        #Get Hyperlink field value and update
        $HyperLinkField = [Microsoft.SharePoint.Client.FieldUrlValue]$Item[$FieldName]
        $HyperLinkField.Url = $HyperLinkNewURL
        $HyperLinkField.Description = $HyperlinkDescription

        #Update Hyperlink Field
        $Item[$FieldName] = $HyperLinkField
        $Item.Update()
        $Ctx.ExecuteQuery()
 
        Write-host "Hyperlink Field Value Updated in Link List!" -ForegroundColor Green
    }
}
Else
{
    Write-host "Hyperlink Field Value '$($HyperLinkURL)' Not Found in Link List!" -ForegroundColor Yellow
}

PnP PowerShell 更新 SharePoint Online 中的超链接列:

要使用 PnP PowerShell cmdlet Set-PnPListItem 设置超链接或图片字段值,请使用:@{“Hyperlink”=“https://URL, LinkText”} 格式。


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/sites/marketing"
$ListName = "Projects"
$ItemID = 1

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

#Update Hyperlink column value using PowerShell
Set-PnPListItem -List $ListName -Identity $ItemID -Values @{"CompanyWebsite"= "https://www.CrescentTech.com, Crescent Technologies Inc."}

此脚本使用 PnP PowerShell 连接到 SharePoint Online,并更新 ID 为“1”的列表项中的超链接列“CompanyWebsite”。

使用 PnP PowerShell 查找和替换 SharePoint Online 列表中的链接

如何使用 PnP PowerShell 在所有列表项中查找和替换 URL 中的特定字符串或特定超链接字段值的描述?随着资源或位置的增长和变化,您可能经常需要更新它们的链接。我必须在 SharePoint Online 列表中查找旧值“地平线”的所有实例,并将其替换为新值“新月”。


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Marketing"
$ListName = "Projects"
$ColumnName = "Project_x0020_Reference" #Internal Name of the Field
$OldString = "horizon" #Set it in lower case
$NewString = "crescent"

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

#Get All List Items
$ListItems = Get-PnPListItem -List $ListName -PageSize 2000

#Iterate through all items in the list
ForEach ($Item in $ListItems)
{
    $Flag =  $false
    $URL = $Item.FieldValues[$ColumnName].URL.ToLower()

    #Check if the URL has the old text
    If($URL.contains($OldString))
    {
        $URL = $URL -Replace $OldString,$NewString
        $Flag =  $True
    }

    #check the description of the Hyperlink
    $Description = $Item.FieldValues[$ColumnName].Description.ToLower()
    If($Description.contains($OldString))
    {
        $Description = $Description -Replace $OldString,$NewString
        $Flag =  $True
    }

    #update the Hyperlink field if URL or Description has the old string
    If($Flag -eq $True)
    {
        #Frame the URL field value
        $Hyperlink = New-Object Microsoft.SharePoint.Client.FieldUrlValue
        $Hyperlink.Url= $URL
        $Hyperlink.Description= $Description

        #Update Hyperlink field value
        Set-PnPListItem -List $ListName -Identity $Item.Id -Values @{$ColumnName = [Microsoft.SharePoint.Client.FieldUrlValue]$Hyperlink} | Out-Null
        Write-host -f Green "List Item $($Item.ID) Updated!"
    }
}

通过遵循本指南中概述的步骤,您可以快速轻松地获取要更新的链接、更新 URL 并保存更改。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯