ค้นหาเว็บไซต์

ค้นหา Web Part ทั้งหมดที่ใช้งานอยู่ในไซต์ SharePoint โดยใช้ PowerShell


ความต้องการ: สร้างรายงานเพื่อรับสินค้าคงคลังของ web part ทั้งหมดที่ใช้งานอยู่ในคอลเลกชันไซต์ SharePoint

สคริปต์ PowerShell เพื่อสร้าง web part ที่ใช้ในไซต์คอลเลกชัน:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Configuration parameters
$SiteURL = "https://intranet.crescent.com"
$ReportOutput="C:\Webparts-in-use.csv" 

$ResultCollection = @()

#Get All Subsites in a site collection and iterate through each
$Site = Get-SPSite $SiteURL
ForEach($Web in $Site.AllWebs)
{
    write-host Processing $Web.URL
    # If the Current Web is Publishing Web
    if ([Microsoft.SharePoint.Publishing.PublishingWeb]::IsPublishingWeb($Web))
    {
        #Get the Publishing Web 
        $PubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($Web)
                  
        #Get the Pages Library
        $PagesLib = $PubWeb.PagesList
     }
     else
     {
        $PagesLib = $Web.Lists["Site Pages"]
     }             
        #Iterate through all Pages  
        foreach ($Page in $PagesLib.Items | Where-Object {$_.Name -match ".aspx"}) 
        {
            $PageURL=$web.site.Url+"/"+$Page.File.URL
            $WebPartManager = $Page.File.GetLimitedWebPartManager([System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)
                
            #Get All Web Parts data
            foreach ($WebPart in $WebPartManager.WebParts)
            {
                $Result = New-Object PSObject
                $Result | Add-Member -type NoteProperty -name "Site URL" -value $web.Url
                $Result | Add-Member -type NoteProperty -name "Page URL" -value $PageURL
                $Result | Add-Member -type NoteProperty -name "Web Part Title" -value $WebPart.Title
                $Result | Add-Member -type NoteProperty -name "Web Part Type" -value $WebPart.GetType().ToString()

                $ResultCollection += $Result
            }
        }
}
#Export results to CSV
$ResultCollection | Export-csv $ReportOutput -notypeinformation

สคริปต์นี้รับ web part ทั้งหมดในไซต์คอลเลกชันและสร้างรายงานในรูปแบบ CSV

จะค้นหาการใช้งาน Web part ที่เฉพาะเจาะจงได้อย่างไร

สมมติว่าคุณต้องการค้นหา Web Part ของ Bamboo ทั้งหมดในสภาพแวดล้อม SharePoint ของคุณ ง่าย ๆ เพียงเปลี่ยน Line#34 เป็น:


 ForEach ($WebPart in $WebPartManager.WebParts | Where-Object { $_.GetType().ToString() -like "*bamboo*"} ) 

ค้นหาการใช้งาน Web Part ในระดับแอปพลิเคชันเว็บ:


Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Configuration parameters
$WebAppURL = "https://intranet.crescent.com"
$ReportOutput="C:\Webparts-in-use.csv" 

$ResultCollection = @()

#Get All Site Collections in the web application
$Sites = Get-SPWebApplication $WebAppURL | Get-SPSite

#Iterate through each Site collection
ForEach($Site in $Sites)
{
    ForEach($Web in $Site.AllWebs)
    {
        write-host Processing $Web.URL
        # If the Current Web is Publishing Web
        if ([Microsoft.SharePoint.Publishing.PublishingWeb]::IsPublishingWeb($Web))
        {
            #Get the Publishing Web 
            $PubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($Web)
                  
            #Get the Pages Library
            $PagesLib = $PubWeb.PagesList
         }
         else
         {
            $PagesLib = $Web.Lists["Site Pages"]
         }             
            #Iterate through all Pages  
            foreach ($Page in $PagesLib.Items | Where-Object {$_.Name -match ".aspx"}) 
            {
                $PageURL=$web.site.Url+"/"+$Page.File.URL
                $WebPartManager = $Page.File.GetLimitedWebPartManager([System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)
                
                #Get All Web Parts data
                foreach ($WebPart in $WebPartManager.WebParts)
                {
                    $Result = New-Object PSObject
                    $Result | Add-Member -type NoteProperty -name "Site URL" -value $web.Url
                    $Result | Add-Member -type NoteProperty -name "Page URL" -value $PageURL
                    $Result | Add-Member -type NoteProperty -name "Web Part Title" -value $WebPart.Title
                    $Result | Add-Member -type NoteProperty -name "Web Part Type" -value $WebPart.GetType().ToString()

                    $ResultCollection += $Result
                }
            }
    }
    #Export results to CSV
    $ResultCollection | Export-csv $ReportOutput -notypeinformation -append
}

บทความที่เกี่ยวข้อง