I want to do a simple task, I made a script who get all followed site from a user. But I want to filter it with compatibilitylevel.

With few sites, it's Ok, I do :

$currentSite = Get-SPSite -Identity $siteFollowed.Uri.AbsoluteUri
if($currentSite.CompatibilityLevel -eq 15){

But with many sites, it's not Ok because I get SPWeb too... So I have this error :

Get-SPSite : Cannot find an SPSite object with Id or Url: 

When I replace Get-SPSite by Get-SPWeb, I can get this site but I can't get compatibilitylevel....

Object SPSite :
Url                                                     CompatibilityLevel  
---                                                     ------------------  
https://site.fr/sites/test               15                  

Object SPWeb :

=> No compatibilityLevel...

Do you have an idea to get the sharepoint version? (2010/2013, 14/15)


2 Answers 2


Try this:

$currentSite = Get-SPSite -Identity $siteFollowed.Uri.AbsoluteUri

  foreach($web in $currentSite.AllWebs){
   $web.Url version is $web.UIVersion #4 or 15
  • Last question, how to determine with powershell if a Sharepoint site is a SPSite object or SPWeb? May 13, 2015 at 13:52
  • if you use Get-SPWeb <URL> successfully, then it is an SPWeb. However all site collections will have a rootweb.
    – Mike
    May 13, 2015 at 13:54
  • Thanks but if you do this, you had an error, you can't test URL without instanciation? May 13, 2015 at 14:02
  • Check this: sharepoint.stackexchange.com/questions/4636/…
    – Mike
    May 13, 2015 at 14:16

You can use GetType() method


If it is web it gives you SPWeb otherwise SPSite

  • Thanks but to test "GetType()" you need to have an object. My problem is I want to know before instanciation if URL is SPSite or SPWeb, otherwise I had an error May 13, 2015 at 14:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.