• Add/Remove listview web part in publish site via powershell


     

    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.PowerShell
    
    if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )
    {
        Add-PSSnapin Microsoft.SharePoint.PowerShell
    }
    Add-PSSnapin System.Reflection -erroraction silentlyContinue
    
    function  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.PowerShell
    
    if ( (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()
                    
                }
    
    }
    


     

     

     

  • 相关阅读:
    三维dem
    geoserver 通过代码实现发布地图服务
    restful发布服务
    php防攻击
    redis主从复制
    redis虚拟内存
    redis 持久化
    lamp源码安装
    mysql优化
    php匿名函数与闭包函数
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3174369.html
Copyright © 2020-2023  润新知