The Get-SPSite  cmdlet as described here returns either a single site that matches the 'Identity' parameter, or all the sites that match the 'Filter' Parameter. But how can I check whether a specific Site Collection does exist?

 

The call

  Get-SPSite http://win-ppdptgfeo66/sites/MockUp

returns the SPSite object [1] when the SC exist - wonderful. 

But when I call it for non-existing site collections I am getting the following error is returned [2].


 OK - so this might be the right time to make use of a 'try-catch block' as shown in the following figure.

 

try {

   Get-SPSite http://win-ppdptgfeo66/sites/MockUp

} catch [Exception]

{

   Write-Host "Keep calm, the site collection has not been found"

}

 

As shown in the screenshot below an error occurs and not the expected Information is shown.

But NO, it seems that the try-catch block is not working here.

The solution for checking the existence of a site collection lies in the standard common PowerShell Parameter 'ErrorAction'.

if ([bool] (Get-SPSite http://win-ppdptgfeo66/sites/Mochup -ErrorAction SilentlyContinue) -eq $false) {
 Write-Host "Keep calm, the site collection has not been found"
} else {
 Write-Host "Wow - Site Collection does exist"
}