1. Here is the code: Add webpart in publish site
Example: addwebpartpublish http: // localhost "/pages/publish. aspx" "shared documents" "Header" "0"
######################################## ###################################
# $ Siteurl: the site URL-Example: http: // localhost #
# $ Pagepath: The page path #
# $ Listname: The name of list that shoshould be added.-Example: Birthdays #
# $ Webpartzone: the zone in page-Example: "Header "#
# $ Index: the index of Web Part in the zone-Example: "0 "#
######################################## ###################################
# Import the Microsoft.SharePoint.PowerShellif ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ){ Add-PSSnapin Microsoft.SharePoint.PowerShell}Add-PSSnapin System.Reflection -erroraction silentlyContinuefunction AddWebPartPublish($siteUrl, $pagePath, $listName, $webpartZone, $index){ $pageUrl = $siteUrl + $pagePath $spWeb = Get-SPWeb $siteUrl -ErrorAction Stop [Microsoft.SharePoint.Publishing.PublishingWeb]$pubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($spWeb); $allowunsafeupdates = $spWeb.AllowUnsafeUpdates $spWeb.AllowUnsafeUpdates = $true $page = $spWeb.GetFile($pageUrl); if ($page.Level -eq [Microsoft.SharePoint.SPFileLevel]::Checkout) { if ($page.CheckedOutBy.UserLogin -eq $spWeb.CurrentUser.UserLogin) { write-host "Page has already been checked out " } else { $SPWeb.CurrentUser.LoginName $page.UndoCheckOut() $page.CheckOut() write-host "Check out the page override" } } else { $page.CheckOut() write-host "Check out the page" } try{ #Initialise the Web part manager for the specified profile page. $spWebPartManager = $spWeb.GetLimitedWebPartManager($pageUrl, [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared) # Check list is exist or not foreach($list in $spWeb.Lists) { if($list.Tostring() -eq $listName) { write-host "The list named $list is existing" #$ListViewWebPart = New-Object Microsoft.SharePoint.WebPartPages.ListViewWebPart $ListViewWebPart = New-Object Microsoft.SharePoint.WebPartPages.XsltListViewWebPart $listViewWebPart.Title = $listName $ListViewWebPart.ListName = ($list.ID).ToString("B").ToUpper() #$ListViewWebPart.ChromeType = "none" $ListViewWebPart.ViewGuid = ($list.Views[0].ID).ToString("B").ToUpper() $spWebPartManager.AddWebPart($ListViewWebPart, $webpartZone, $index) $spWebPartManager.SaveChanges($ListViewWebPart) break; } } #Check to ensure the page is checked out by you, and if so, check it in if ($page.CheckedOutBy.UserLogin -eq $spWeb.CurrentUser.UserLogin) { $page.CheckIn("Page checked in automatically by PowerShell script") Write-Output "Page has been checked in" } $page.Publish("Published") Write-Output "Page has been published success" $pubWeb.Close() $spWeb.Update() if($flag -eq 0) { write-host "Not exist" } else { Write-Output "success" } } catch { write-host "(ERROR : "$_.Exception.Message")" throw } finally { $spWeb.Dispose() }}
2. Here is the code: delete webpart in publish site
Example: removewebpart "http: // localhost" "/pages/publish. aspx" "shared documents"
######################################## ###################################
# $ Siteurl: the site URL-Example: http: // localhost #
# $ Pagepath: The page path #
# $ Listname: The name of list that shoshould be added.-Example: Birthdays #
######################################## ###################################
# Import the Microsoft.SharePoint.PowerShellif ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ){ Add-PSSnapin Microsoft.SharePoint.PowerShell}function RemoveWebPart($siteUrl, $pagePath, $name){ #$web = $site.OpenWeb("/Ops") # Check the parameter is null or not if($siteUrl.trim() -eq $null -or $name.trim() -eq $null -or $pagePath.trim() -eq $null) { write-host "The parameter is null" return } $pageUrl = $siteUrl + $pagePath $spWeb = Get-SPWeb $siteUrl -ErrorAction Stop [Microsoft.SharePoint.Publishing.PublishingWeb]$pubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($spWeb); $allowunsafeupdates = $spWeb.AllowUnsafeUpdates $spWeb.AllowUnsafeUpdates = $true $page = $spWeb.GetFile($pageUrl); if ($page.Level -eq [Microsoft.SharePoint.SPFileLevel]::Checkout) { if ($page.CheckedOutBy.UserLogin -eq $spWeb.CurrentUser.UserLogin) { write-host "Page has already been checked out " } else { $SPWeb.CurrentUser.LoginName $page.UndoCheckOut() $page.CheckOut() write-host "Check out the page override" } } else { $page.CheckOut() write-host "Check out the page" } try{ #Initialise the Web part manager for the specified profile page. $spWebPartManager = $spWeb.GetLimitedWebPartManager($pageUrl, [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared) $flag = 0 #Circle all the Webparts in the specified page foreach ($webpart in $spWebPartManager.WebParts) { #write-host $siteUrl +": Existing Web part - " + $webpart.Title + " : " + $webpart.ID if($webpart.Title -eq $name) { $spWebPartManager.DeleteWebPart($spWebPartManager.WebParts[$webpart.ID]) $spWebPartManager.SaveChanges($webpart) Write-Output "Delete the webpart" $flag = 1 break; } } #Check to ensure the page is checked out by you, and if so, check it in if ($page.CheckedOutBy.UserLogin -eq $spWeb.CurrentUser.UserLogin) { $page.CheckIn("Page checked in automatically by PowerShell script") Write-Output "Page has been checked in" } $page.Publish("Published") Write-Output "Page has been published success" $pubWeb.Close() $spWeb.Update() if($flag -eq 0) { write-host "Not exist" } else { Write-Output "success" } } catch { write-host "(ERROR : "$_.Exception.Message")" throw } finally { $spWeb.Dispose() }}