I have created multiple views in different lists (approximately 100) across the site and I am storing those list view URL’s in a link list. I have two different environments, INT and QA. When I migrate the link list from one environment to other environment the link list is migrated with all contents but the URLs have to be updated. For example, see the URL format below for each environment.

INT - Link 001 - https://c986.sharepoint.com/sites/dev-int/Lists/Demo/link001.aspx

QA - Link 001 - https://c986.sharepoint.com/sites/dev-qa/Lists/Demo/link001.aspx

In order to overcome this, I have written the below PnP PowerShell script which updates the URLs in the link lists.

You can download setup files from the releases section of the PnP PowerShell repository.

Copy the below script and paste it in a notepad. Save the file as UpdateHyperLink.ps1.

  1. # Input Parameters
  2. $siteURL="https://c986.sharepoint.com/sites/dev-qa"
  3. $listName="Links"
  4. # Connect to SharePoint Online site
  5. Connect-PnPOnline -Url $siteURL -Credentials (Get-Credential)
  6. # Get the list items
  7. $itemColl=Get-PnPListItem -List $listName
  8. # Loop through each item
  9. foreach($item in $itemColl)
  10. {
  11. # Get the item URL value
  12. $url=$item["URL"].Url;
  13. # Update the URL
  14. $updatedURL=New-Object Microsoft.SharePoint.Client.FieldUrlValue
  15. $updatedURL.Url=$url.Replace("dev-int","dev-qa");
  16. $updatedURL.Description=$item["URL"].Description;
  17. $values = @{"URL"=[Microsoft.SharePoint.Client.FieldUrlValue]$updatedURL }
  18. # Get the item Id
  19. $id=$item.Id
  20. # Update the list item
  21. Set-PnPListItem -List Links -Identity $id -Values $values
  22. }

Open PowerShell window and run the following command.

  1. >cd "<folderlocation>"

folderlocation –UpdateHyperLink.ps1 file location

Run the following command

  1. >.\ UpdateHyperLink.ps1

Thus in this blog, you saw how to update the hyperlink in the SharePoint Online List Items using PnP PowerShell.