A simple Power Script that counts SP sites recursively:
function Get-SPPublishingSiteInventory {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)][string]$SiteUrl
)
Start-SPAssignment -Global
$Site = New-Object Microsoft.SharePoint.SPSite($SiteUrl)
$PubSite = New-Object Microsoft.SharePoint.Publishing.PublishingSite($Site)
$PubPageCount = 0
$ImageCount = 0
$DocCount = 0
foreach ($Web in $Site.AllWebs) {
$PubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($Web)
$Pages = $PubWeb.GetPublishingPages($PubWeb)
$PageCount = $Pages.Count
$PubPageCount = $PubPageCount + $PageCount
$Images = $PubWeb.ImagesLibrary.ItemCount
$ImageCount = $ImageCount + $Images
$Documents = $PubWeb.DocumentsLibrary.ItemCount
$DocCount = $DocCount + $Documents
$Web.Dispose()
}
$Site.Dispose()
Write-Host “Number of Sites: ” $site.allwebs.count
Write-Host “Number of Pages: ” $PubPageCount
Write-Host “Number of Images: ” $ImageCount
Write-Host “Number of Documents: ” $DocCount
Stop-SPAssignment -Global
}
Get-SPPublishingSiteInventory “http://sharepointurl”