Friday, February 10, 2017

Change Content of Content Editor WebPart Using PowerShell SharePoint 2013

This PowerShell script will change the content of a content editor webpart based on its title. You can change the title of target webpart as well as in PowerShell script too.

1. Site Collections File

Create text file with name “SiteCollections.txt” in the same directory where script file is present.
Write site collections urls in “SiteCollections” file.
Make it sure each url should be in new line and write “End Point” at the end as shown below. End Point is a reserve word for this script.



  2. Open SharePoint 2013 Management Shell




3.   Change directory path where script file is saved.




4.    Type script name

Copy and Save this script with name like ChangeWebPartContent.ps1 and ps1 extention.
Type ”./ ChangeWebPartContent.ps1 –path “directory path\SiteCollections.txt” –overwrite o “ and press enter key.
Or
Type ”./ ChangeWebPartContent.ps1 –path “directory path\SiteCollections.txt” –overwrite A “ and press enter key.
-overwrite o will over write web part content and –overwrite a will append to web part content. 

[code] param([string]$Path = "", [string]$Overwrite = "") Function ChangeWebPartContent([string]$SPSite, [string]$OverWriteContent) { #Write-Host "Site : " $SPSite " Overwrite : " $OverWriteContent $site=Get-SPSite $SPSite -ErrorAction SilentlyContinue if($site -ne $null) {Write-Host "Web Found: " $site.RootWeb.URL} else{ [console]::ForegroundColor = "Red" write-Host "Web Not Found: " $SPSite [console]::ForegroundColor = "White" } #Loop throgh each subsite in the site collection try{ $file= $web.GetFile($site.RootWeb.RootFolder.WelcomePage) #Write-Host "Found Welcome Page: " $web.URL } catch [System.Exception] { #Write-Host $_.Exception.Message #Write-Host "Unable to get Welcome Page: " $web.URL } foreach($web in $Site.RootWeb) { #Get the Default.aspx file try{ $file= $web.GetFile($web.Url +$web.RootFolder.WelcomePage) } catch { } #Write-Host $file.URL if($file.Exists) { #Web Part Manager to get all web parts from the file $WebPartManager = $web.GetLimitedWebPartManager( $file, [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared) #Iterate through each web part foreach($webPart in $WebPartManager.WebParts) { # Get the Content Editor web part with specific Title if( ($webPart.title -eq "My Custom Web Part" -Or $webPart.title -eq "Target Web Part Title" -and ($webPart.GetType() -eq [Microsoft.SharePoint.WebPartPages.ContentEditorWebPart]) ) { try{ #Content to be Placed inside CEWP $HtmlContent= "Hello, this is updated content." $XmlDoc = New-Object System.Xml.XmlDocument $contentXml=$xmlDoc.CreateElement("content") if($OverWriteContent -eq "A") { $HtmlContent = $webpart.Content.InnerText + $HtmlContent } $contentXml.InnerText = $HtmlContent #Set content and Save $webpart.Content = $contentXml $webPartManager.SaveChanges($webPart); [console]::ForegroundColor = "Green" Write-Host "Webpart found: " $web.URL [console]::ForegroundColor = "White" } catch [System.Exception] { #Write-Host $_.Exception.Message [console]::ForegroundColor = "Red" Write-Host "Unable to update webpart: " $web.URL [console]::ForegroundColor = "White" } } } } } } ############################################################################################################################################ $SitesArray = Get-Content -Path ($ScriptPath) $OverWriteData = $OverWrite if($OverWriteData -eq "O" -Or $OverWriteData -eq "A") { for($i=0; $i -le $SitesArray.Length; $i++) { if($SitesArray[$i] -ne "End Point" -And $SitesArray[$i].Length -gt "5") { ChangeWebPartContent $SitesArray[$i] $OverWrite } } } else { [console]::ForegroundColor = "Red" Write-Host "Unknown input, try again...!" [console]::ForegroundColor = "White" } [/code]

2 comments:

  1. wow really superb you had posted one nice information through this. Definitely it will be useful for many people. So please keep update like this.


    HR Consultancy in Bangalore

    ReplyDelete