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.