Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

I want to add a webpart to a great number of existing pages. Is there any PowerShell command to add a webpart to a webpart page?

share|improve this question
    
When you say "add a webpart to a SPWeb" do you mean you actually want to put the web part on a page within the SPWeb? Or you just want it to show up in the web part gallery for that SPWeb or ? –  Sam Yates Jul 27 '11 at 22:29
    
Thanks for your commet! It mean that I want to put a existing WebPart from the WebPart gallery on a site –  LaPhi Jul 28 '11 at 8:51

4 Answers 4

up vote 1 down vote accepted

There's no PowerShell Command, but you can use the AddWebPart method of the SPWebPartManager class to add the WebPart to a WebPartPage: http://msdn.microsoft.com/EN-US/library/ms157507(v=VS.90)

You can get a SPWebPartManager object by calling WebPartManager.GetCurrentWebPartManager and providing it your WebPartPage: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.webpartmanager.getcurrentwebpartmanager(v=VS.90).aspx

share|improve this answer

Theres nothing like this OOB, but you have pretty much the same options in PowerShell as in say a console application in C#.
So theres the option of coding your own cmdlet that does this for you.
On NBSP i found this script that should get you going.

share|improve this answer

Here are some sample powershell scripts for adding webparts to sites:

A nice, simple, clean code for adding a CEWP:

https://www.nothingbutsharepoint.com/sites/devwiki/SP2007Dev/Pages/How%20to%20create%20Web%20Part%20instances%20on%20pages%20using%20PowerShell%20and%20SPLimitedWebPartManager.aspx

This one adds a customized web-part:

http://www.sharemuch.com/2010/11/17/using-powershell-to-add-and-configure-sharepoint-2010-webparts/

And this adds a page-viewer webpart - Mr. Hahner made this blogpost especially for me! http://spcrew.com/blogs/lists/posts/post.aspx?id=21

share|improve this answer
    
Whoops - I just realized that Anders Rask already mentioned one of my links... –  BGM May 6 '12 at 23:03

Here is a simple script to add a webpart to a page using PowerShell which is tested and working fine.

Please note that to add a webpart to a page export webpart to your local drive .webpart/.dwp file will be in xml format.

cls

asnp "*sh*"

$web=Get-SPweb -Identity "http://SP2013dev.com/sites/addwebpart/"

[xml]$webpartxml= Get-Content -Path "C:\Manju\WPRequest.xml"

$SR = New-Object System.IO.StringReader($webpartxml.OuterXml)

$XTR = New-Object System.Xml.XmlTextReader($SR)

$err=$null

$WebPartZoneID = "Topzone"

$WebPartZoneIndex = 0

 try
   {

  $page=$web.GetFile("Pages/default.aspx");

  $bool=$page.CheckedOutBy

       if($bool)
        {
            Write-Host "Page is already Checkout to " $page.CheckedOutBy.UserLogin

            $page.UndoCheckOut()

            Write-Host "Page is Over ridded by " $web.CurrentUser.DisplayName + " to Add Webpart"
        }

    $page.CheckOut();

    $wmgr=$web.GetLimitedWebPartManager($page,    [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared);

    $webpart=$wmgr.ImportWebPart($XTR,[ref]$err);

    $wmgr.AddWebPart($webpart,$WebPartZoneID,$WebPartZoneIndex);

    $page.CheckIn('dude');

    $page.Publish('Adding request Site Webpart') 

    "Request Site WebPart SucessfullAdded" + (Get-Date -DisplayHint Date) | Out-File -Append "C:\OutPutLog.txt" 

     $SR.Close();
    $XTR.Close();
     $web.Dispose()

    }
    catch
     {
        $ErrorMessage = $_.Exception.Message 

        "Request Site WebPart Failure" + $ErrorMessage  +  (Get-Date -DisplayHint Date) | Out-File -Append "C:\ErrorLog.txt"
    }
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.