zoukankan      html  css  js  c++  java
  • 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()
                    
                }
    
    }
    


     

     

     

  • 相关阅读:
    trackr: An AngularJS app with a Java 8 backend – Part III
    trackr: An AngularJS app with a Java 8 backend – Part II
    21. Wireless tools (无线工具 5个)
    20. Web proxies (网页代理 4个)
    19. Rootkit detectors (隐形工具包检测器 5个)
    18. Fuzzers (模糊测试器 4个)
    16. Antimalware (反病毒 3个)
    17. Debuggers (调试器 5个)
    15. Password auditing (密码审核 12个)
    14. Encryption tools (加密工具 8个)
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3174369.html
Copyright © 2011-2022 走看看