SharePoint Script to find all webparts on a site

In SharePoint 2013 by rhodzyLeave a Comment

Edit the URL at the bottom

# Add SharePoint cmdlets reference
Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue

function enumerateWebParts($Url) {
$site = new-object Microsoft.SharePoint.SPSite $Url

foreach($web in $site.AllWebs) {
if ([Microsoft.SharePoint.Publishing.PublishingWeb]::IsPublishingWeb($web)) {
$pWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web)
$pages = $pWeb.PagesList

Write-Host “Processing Web:” $pWeb.Url “…” -ForegroundColor Magenta

foreach ($item in $pages.Items) {
$fileUrl = $webUrl + “/” + $item.File.Url
Write-Host ” ” $fileUrl -ForegroundColor Green
$manager = $item.file.GetLimitedWebPartManager
([System.Web.UI.WebControls.Webparts.PersonalizationScope]::Shared);
$wps = $manager.webparts
$wps | select-object @{Expression={$pWeb.Url};Label=”Web URL”},@{Expression={$fileUrl};Label=”Page
URL”}, DisplayTitle, IsVisible, @{Expression={$_.GetType().ToString()};Label=”Type”}
}
}
else {
Write-Host ” Not a publishing web:” $web.Url”. Looking for Site Pages library.” -ForegroundColor
Magenta
$pages = $null
$pages = $web.Lists[“Site Pages”]

if ($pages) {
Write-Host ” ” $pages.Title “found.” -ForegroundColor Green

foreach ($item in $pages.Items) {
$fileUrl = $webUrl + “/” + $item.File.Url
$manager = $item.file.GetLimitedWebPartManager
([System.Web.UI.WebControls.Webparts.PersonalizationScope]::Shared);
$wps = $manager.webparts
$wps | select-object @{Expression={$pWeb.Url};Label=”Web URL”},@{Expression=
{$fileUrl};Label=”Page URL”}, DisplayTitle, IsVisible, @{Expression={$_.GetType().ToString()};Label=”Type”}
}
}
else {
Write-Host ” Site Pages library not found.” -ForegroundColor Red
}
}

Write-Host “… completed processing” $web “…” -ForegroundColor Magenta
}
}

$row = enumerateWebParts(‘http://sharepointsite/’)
$row | Out-GridView