1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | ## CONTACT INFO ## ------------------------------------------------ ## CREATED : 2013.03.30 ## MODIFIED : ## AUTHOR : Jason Lasby ## EMAIL : digitalslavery@gmail.com ## ## DESCRIPTION ## ------------------------------------------------ ## Script to loop through a set of Subsites and ## Delete a web part from a page stored in the SitePages ## Document Library named Dashboard.aspx ## ## EXPLAINATION ## ------------------------------------------------ ## This example illustrates how to delete a webpart ## from a set of sites that use the same page layout ## and configured with the same web parts, think about ## a company dashboard site where each department may ## report standard data like who is in who is out, ## work related accidents, finance data, shipping ## information, etc... We can loop through our sites ## and add or remove web parts for all sites at once. ## ## BEGIN ## ------------------------------------------------ ## Load up the snapin so Powershell can work with SharePoint ## if the snapin was already loaded don't alert the user Add-PSSnapin microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue ## Clear any errors or output to the screen CLS ## Set variables ## This variable will be the site where I want to start function RemoveWebPart { foreach ( $wp in $wpm .WebParts | ?{$_.Title -like "* Banner *" }) { if( $wp ) { $listOfWebParts = $wp .ID foreach ( $matchFound in $listOfWebParts ) { $wpm .DeleteWebPart( $wpm .WebParts[ $matchFound ]) Write-Host "$matchFound was deleted for $webSite" } } } } Start -SPAssignment -Global ## Create a variable to hold the SharePoint site, invoke the connection ## to the site we defined in the $parentSite variable $web = Get -SPWeb $parentSite ## Check to make sure that url exists if( $web ) { ## Loop through all the sub sites of the site url we got foreach ( $webSite in $web .Webs) { $webSiteName = $webSite .Name $pageUrl = "SitePages/dashboard.aspx" $page = $webSite .GetFile( $pageUrl ) $wpm = $webSite .GetLimitedWebPartManager( $page , [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared) if( $wpm ) { RemoveWebPart } else { Write-Host "Web part not found" } } } else { ## Gracefully let the user know that the site they requested ## was not available or was not found. Write-Host "$webSite not found, check the url and try again." } Stop -SPAssignment -Global |
SharePoint 2007/2010 development using C# and Powershell. Mostly just things I have found that make my job easier but I had to search around to find answers to.
Saturday, March 30, 2013
Powershell Delete a webpart from a SharePoint webpart page loop
Today I find that when I create new things, often times I create too many things during my testing of say dynamically adding a webpart to a SharePoint webpart page. So I need to have a way to quickly loop through my hundereds of sites and delete the webpart.
Subscribe to:
Post Comments (Atom)
1 comment:
Please confirm if this step has no error.
$listOfWebParts = $wp.ID
foreach($matchFound in $listOfWebParts)
------------------------
$wp.ID is a single value not a collection. I'm confused why there is foreach for $listOfWebParts, where as this is just an ID.
Post a Comment