Get Web Parts In A Site Collection

Create a ps1 extension file and save it in your local path.

Change the highlighted part with your site collection url.

 

  1. function EnumAllWebPartsOfSiteCollection($Url) {  
  2.     $site = new - object Microsoft.SharePoint.SPSite $Url  
  3.     $allFiles = @()  
  4.     foreach($web in $site.AllWebs) {  
  5.         Write - Host "Processing Web:"  
  6.         $web.Url - NoNewLine  
  7.         if ([Microsoft.SharePoint.Publishing.PublishingWeb]::IsPublishingWeb($web)) {  
  8.             $pWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web)  
  9.             $pages = $pWeb.PagesList  
  10.             foreach($item in $pages.Items) {  
  11.                 $allFiles += $item.File  
  12.             }  
  13.         }  
  14.         $pages = $null  
  15.         $pages = $web.Lists["Site Pages"]  
  16.         if ($pages) {  
  17.             foreach($item in $pages.Items) {  
  18.                 $allFiles += $item.File  
  19.             }  
  20.         }  
  21.         foreach($file in $web.Files) {  
  22.             $allFiles += $file  
  23.         }  
  24.         $web.Dispose()  
  25.         Write - Host " - completed"  
  26.     }  
  27.     foreach($file in $allFiles) {  
  28.         $fileUrl = $Url + $file.ServerRelativeUrl  
  29.         $manager = $file.GetLimitedWebPartManager([System.Web.UI.WebControls.Webparts.PersonalizationScope]::Shared);  
  30.         $wps = $manager.webparts  
  31.         $manager.Dispose()  
  32.         $wps | select - object @ {  
  33.             Expression = {  
  34.                 $file.Web.Url  
  35.             };  
  36.             Label = "Web URL"  
  37.         }, @ {  
  38.             Expression = {  
  39.                 $fileUrl  
  40.             };  
  41.             Label = "Page URL"  
  42.         }, DisplayTitle, IsVisible, @ {  
  43.             Expression = {  
  44.                 $_.GetType().ToString()  
  45.             };  
  46.             Label = "Type"  
  47.         }  
  48.     }  
  49.     $site.Dispose()  
  50. }  
  51. $row = EnumAllWebPartsOfSiteCollection('http://hvsp01:31300/sites/Test')  
  52. $row | Out - GridView  

 

Open Management Shell as an administrator.

Run the PS script using the path along with the file name in the management shell.

Here is the required output.