Add/Remove listview web part in publish site via powershell

來源:互聯網
上載者:User
 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 should 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 should 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()                            }}

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.