0

I want to add a web part to my page created in SitePages, using PowerShell script.

2
  • What type of webpart? Is the webpart already deployed and available on the site? Commented Jan 8, 2015 at 12:46
  • Yes, the web part is already deployed and i just need to add that web part in my page using powershell script Commented Jan 8, 2015 at 12:47

2 Answers 2

1

Here is a snippet which you can use, the web part XML file should be placed in a local folder.

# Add PowerShell Snapin
 $snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.Powershell'}
 if ($snapin -eq $null)
 {
     Add-PSSnapin "Microsoft.SharePoint.Powershell"
 }

 # Get the Site URL
 $SiteUrl = "https://MySiteCollectionURL/"

 # Get the Web URL
 $WebUrl = "https://MyWebSiteURL"

 # Get the Page on which WE are going to Add the WebPart
 $PageName = "Test.aspx"

 # The location of the WEbPart Definition File
 $localWebpartPath = "C:\WebParts\MyWebPart.webpart"

 # Error Message which is required as a Reference Parameter while Importing the WEbPart
 $errorMsg = "Test Error Message"

 # Initializing the SPSite Object
 $Site = Get-SPSite($SiteUrl)

 # Get an instance for Publishing Site based on SPSite
 $PubSite = New-Object Microsoft.SharePoint.Publishing.PublishingSite($Site)

 # Get the SPWEb Object
 $Web = Get-SPWeb $WebUrl

 # Get the Publishing Web Based on the SPWeb Object
 $PubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($Web)

 # The below commented line is to get all the Pages
 #$PubWeb.GetPublishingPages($PageName);

 # Get only our Page
 $PublishingPage = $PubWeb.GetPublishingPage("https://MyWebURL/Pages/Test.aspx");

 # Make the Web as AllowUnSafeUpdates as true
 $Web.AllowUnsafeUpdates = $true

 # Checkout the Publishing Page
 $PublishingPage.CheckOut();

 # Get the LimitedWEbPartManager
 $limitedWebPartManager = $PublishingPage.ListItem.File.GetLimitedWebPartManager([System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared);

 # Initialize the XmlReaderSettings Object which is required for the XmlReader Object
 $xmlReaderSettings = New-Object System.Xml.XmlReaderSettings

 # Create the XmlReader Object by using the WebPart Definition file and the ReaderSettings Object
 $xmlReader = [System.Xml.XmlReader]::Create($localWebpartPath,$xmlReaderSettings);

 #Add Web Part to catalogs folder and Get the WebPart Definition Object based on the webpart definition xml file    
 $oWebPartDefinition = $limitedWebPartManager.ImportWebPart($xmlReader,[ref]$errorMsg);

 # Add the WebPart to the WebPartManager by specifing the Zone and the Index.
 $limitedWebPartManager.AddWebPart($oWebPartDefinition,"RightZone",1);

 # Checkin the Publishing Page
 $PublishingPage.CheckIn("Checkin");

 # Publish the Page
 $PublishingPage.ListItem.File.Publish("Publish");

 # Revert the AllowUnsafeUpdates to False once we are done.
 $Web.AllowUnsafeUpdates = $false

 # I was trying to Approve the Page.  But, if the Approve is enabled on the Pages Library level,
 # then only we can do that.  Otherwise we cannot.  But the Syntax is correct as below.

 # $PageListItem.File.Approve("Page approved automatically by PowerShell script") 

- See more at: http://www.sharepointpals.com/post/How-to-Add-WebPart-to-the-Publishing-Page-using-PowerShell-in-SharePoint-2013#sthash.xcdNmxZv.dpuf
1
  • I have tried this code but its giving me an error near GetPublishingPage like "The SPListItem provided is not compatible with a Publishing Page.". Commented Jan 8, 2015 at 13:03
0

Above code works, create limitedwebpartmanager object using below line.

$limitedWebPartManager = $Web.GetLimitedWebPartManager($PublishingPage.url, [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.