How to iterate thru all SiteCollections and containing the Websites. This script also shows a progressbar on screen:
$sites = Get-SPSite -Limit All
$siteIter = 0
foreach($site in $sites) {
Write-Progress -PercentComplete (($siteIter / $sites.Count) * 100) -Activity "Iteration Sites" -Status $site.HostName
$webIter = 0
# Do something here
foreach($web in $site.AllWebs) {
Write-Progress -PercentComplete (($webIter / $site.AllWebs.Count) * 100) -Activity "Iteration Webs" -Status $web.Title -Id 2
Write-Host $web.Title
$webIter++
# Do something here
}
$siteIter++
}