Displaying the all Site Collections and Its Sub Sites using PowerShell

The below sample Power Shell script will retrieve all its Site Collections and its sub sites.

Command to Execute

.\<<File Name>>.ps1 <<WebApplicationURL>>

Ex

 .\DisplayAllSites.ps1 “http://RKWebApplication.com”

Power Shell Script

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Publishing")

[System.Reflection.Assembly]::LoadWithPartialName("System")

[System.Reflection.Assembly]::LoadWithPartialName("System.IO")

 

$PSshell = Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorVariable err -ErrorAction SilentlyContinue

if($PSshell -eq $null){ Add-PSSnapin "Microsoft.SharePoint.PowerShell" }

 

function DisplayAllSiteCollectionsAndWebs([string]$applicationUrl)

{

            Write-Host "WEB APPLICATION URL: $($applicationUrl)"           

            try

            {

                        # Getting WebApplication based on url

                        $rootSite = New-Object Microsoft.SharePoint.SPSite($applicationUrl)

                        $spWebApp = $rootSite.WebApplication

                        $spSiteColl = $spWebApp.Sites                       

                        # Looping Site Collections

                        For($i=0; $i -lt $spSiteColl.Count; $i++)

                        {                                              

                                    # Site Collection URL

                                    $SiteCollURL = $spSiteColl[$i].URL

                                    Write-Host "`t- Site Collection URL: $($SiteCollURL)"

                                   

                                    $allwebs = $spSiteColl[$i].AllWebs

           

                                    # Looping all Webs(sites)

                                    For($j=0; $j -lt $allwebs.Count; $j++)

                                    {

                                                $webURL = $allwebs[$j].URL

                                                Write-Host "`t`t- Web URL: $($webURL)"

                                    }          

                        }

                        $rootSite.Dispose();

            }

            catch [system.exception]

            {

                        Write-Host "[ERROR] - Exception: ($($_.Exception.Message))"

            }

Write-Host "------------- Start of the Script -------------"

$webApplicationUrl = $args[0]

DisplayAllSiteCollectionsAndWebs $webApplicationUrl

Write-Host "--------------- End of the Script -------------"

Output

--------------- Start of the Script -------------
WEB APPLICATION URL: http://RKWebApplication.com
- Site Collection URL: http://RKWebApplication.com/BRK_SiteCollection
- Web URL: http://RKWebApplication.com/BRK_SiteCollection
- Web URL: http://RKWebApplication.com/BRK_SiteCollection/RKSubSite
- Web URL: http://RKWebApplication.com/BRK_SiteCollection/RKSubSite2
- Site Collection URL: http://RKWebApplication.com/Rama_SiteCollection
- Web URL: http://RKWebApplication.com/Rama_SiteCollection
- Web URL: http://RKWebApplication.com/Rama_SiteCollection/RamaSubSite
- Web URL: http://RKWebApplication.com/Rama_SiteCollection/RamaSubSite2
--------------- End of the Script -------------