Update Web Part Properties using PowerShell in SharePoint
Ever wanted to update SharePoint web part properties programmatically? After a company acquisition, We had to change the company name from a custom web part’s title, throughout the web application.
SharePoint update web part properties using PowerShell:
$Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#configuration parameters
$WebURL="https://sharepoint.Crescent.com"
#Get objects
$web = Get-SPWeb $WebURL
$page = $web.GetFile("SitePages/Home.aspx")
$page.CheckOut()
$WebPartManager = $web.GetLimitedWebPartManager($Page.ServerRelativeUrl,[System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)
#$WebPartManager.WebParts
$WebPartManager.WebParts | % { write-host $_.title}
#Get the Web part
$Webpart = $WebPartManager.WebParts | Where { $_.Title -eq "Shared Documents"}
#Update Webpart Property
$Webpart.Title = "Team Documents"
#Save and Publish
$WebPartManager.SaveChanges($Webpart)
$page.CheckIn("updated Title Property")
Update Web Part Properties in entire Web Application:
Say, we want to update all web part titles containing “Crescent Inc.” to “Lunar Inc.”
#Get All Webs (sites)
$webs = Get-SPWebApplication "https://sharepoint.Crescent.com" | Get-SPSite -Limit All | Get-SPWeb -Limit All
#Iterate through webs
foreach ($web in $webs)
{
#Get All Pages from site's Root into $AllPages Array
$AllPages = @($web.Files | Where-Object {$_.Name -match ".aspx"})
#Search All Folders for Pages
foreach ($folder in $web.Folders)
{
#Add the pages to $AllPages Array
$AllPages += @($folder.Files | Where-Object {$_.Name -match ".aspx"})
}
#Iterate through all pages
foreach($Page in $AllPages)
{
#Web Part Manager to get all web parts from the page
$webPartManager = $web.GetLimitedWebPartManager($Page.ServerRelativeUrl, [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)
#Iterate through each web part
foreach($webPart in $WebPartManager.WebParts)
{
$OldTitle=$webPart.title
#Get the Content Editor web part with specific Title
if($webPart.title -like "*Crescent Inc*")
{
#Replace the Old Title
$webPart.title = $webPart.title.Replace("Crescent Inc.", "Lunar Inc.")
#Same method goes to update any other custom properties.
#E.g. To update Page viewer web part's link property:
#$webPart.ContentLink = "https://www.sharepointdiary.com"
#To set built-it properties, E.g. To set Set the Chrome type programmatically use:
#$webPart.ChromeType = [System.Web.UI.WebControls.WebParts.PartChromeType]::TitleAndBorder
#Save the changes
$webPartManager.SaveChanges($webPart)
write-host "Updated '$($OldTitle)' on $($web.URL)$($Page.ServerRelativeUrl)"
}
}
}
}
Hi,
thanks for your great article. I have a question; is there any Solution for “Repleas an NewImage in SPO Website or SPO Template(.xml file)” ?
Kind regards
Farideh
Hi, thanks for your great article.
I have a question; is there any solution for “replace an image in SPO website or SPO Template .xml” ?
Kind regards
Farideh
whats does the script looks like, when updating the contact webpart with contosousername to fabrikamusername . ?