Here’s a PowerShell HashTable pre-built with the Active Directory and Exchange schema versions as of September 2014.
Active Directory (Forest Prep) Schema Versions:
| 13 | Windows 2000 Schema | 
| 30 | Windows 2003 Schema | 
| 31 | Windows 2003 R2 Schema | 
| 39 | Windows 2008 BETA Schema | 
| 44 | Windows 2008 Schema | 
| 47 | Windows 2008 R2 Schema | 
| 51 | Windows Server 8 Developer Preview Schema | 
| 52 | Windows Server 8 BETA Schema | 
| 56 | Windows Server 2012 Schema | 
| 69 | Windows Server 2012 R2 Schema | 
| 81 | Windows Server 2016 Technical Preview Schema | 
Exchange (Forest Prep) Schema Versions:
| 4397 | Exchange 2000 RTM Schema | 
| 4406 | Exchange 2000 SP3 Schema | 
| 6870 | Exchange 2003 RTM Schema | 
| 6936 | Exchange 2003 SP3 Schema | 
| 10637 | Exchange 2007 RTM Schema | 
| 11116 | Exchange 2007 RTM Schema | 
| 14622 | Exchange 2007 SP2 & Exchange 2010 RTM Schema | 
| 14625 | Exchange 2007 SP3 Schema | 
| 14726 | Exchange 2010 SP1 Schema | 
| 14732 | Exchange 2010 SP2 Schema | 
| 14734 | Exchange 2010 SP3 Schema | 
| 15137 | Exchange 2013 RTM Schema | 
| 15254 | Exchange 2013 CU1 Schema | 
| 15281 | Exchange 2013 CU2 Schema | 
| 15283 | Exchange 2013 CU3 Schema | 
| 15292 | Exchange 2013 SP1/CU4 Schema | 
| 15300 | Exchange 2013 CU5 Schema | 
| 15303 | Exchange 2013 CU6 Schema | 
| 15312 | Exchange 2013 CU7 Schema | 
| 15312 | Exchange 2013 CU8 Schema | 
| 15312 | Exchange 2013 CU9 Schema | 
| 15317 | Exchange 2016 Preview Schema | 
PowerShell Script Code:
Write-Verbose “Create Schema Version hashtable `r ”
$SchemaVersionTable =
@{
“13” = “Windows 2000 Schema” ;
“30” = “Windows 2003 Schema”;
“31” = “Windows 2003 R2 Schema” ;
“39” = “Windows 2008 BETA Schema” ;
“44” = “Windows 2008 Schema” ;
“47” = “Windows 2008 R2 Schema” ;
“51” = “Windows Server 8 Developer Preview Schema” ;
“52” = “Windows Server 8 BETA Schema” ;
“56” = “Windows Server 2012 Schema” ;
“69” = “Windows Server 2012 R2 Schema” ;
“81” = “Windows Server 2016 Technical Preview Schema” ;“4397” = “Exchange 2000 RTM Schema” ;
“4406” = “Exchange 2000 SP3 Schema” ;
“6870” = “Exchange 2003 RTM Schema” ;
“6936” = “Exchange 2003 SP3 Schema” ;
“10637” = “Exchange 2007 RTM Schema” ;
“11116” = “Exchange 2007 RTM Schema” ;
“14622” = “Exchange 2007 SP2 & Exchange 2010 RTM Schema” ;
“14625” = “Exchange 2007 SP3 Schema” ;
“14726” = “Exchange 2010 SP1 Schema” ;
“14732” = “Exchange 2010 SP2 Schema” ;
“14734” = “Exchange 2010 SP3 Schema” ;
“15137” = “Exchange 2013 RTM Schema” ;
“15254” = “Exchange 2013 CU1 Schema” ;
“15281” = “Exchange 2013 CU2 Schema” ;
“15283” = “Exchange 2013 CU3 Schema” ;
“15292” = “Exchange 2013 SP1/CU4 Schema” ;
“15300” = “Exchange 2013 CU5 Schema” ;
“15303” = “Exchange 2013 CU6 Schema” ;
“15312” = “Exchange 2013 CU7/CU8/CU9 Schema”
“15317” = “Exchange 2016 Preview Schema”
}========
EXCHANGE
========
Write-Verbose “Get Exchange Forest Prep Version”
$RootDSEExchangerangeUpper = ([ADSI]”LDAP://CN=ms-Exch-Schema-Version-Pt,CN=Schema,CN=Configuration,$RootDSE”).rangeUpper
$RootDSEExchangeobjectVersion = ([ADSI]”LDAP://cn=,cn=Microsoft Exchange,cn=Services,cn=Configuration,$RootDSE”).objectVersion
$ExchangeSchemaVersionName = $SchemaVersionTable.Get_Item(“$RootDSEExchangerangeUpper”)Write-Output “The current Exchange Schema Version is $RootDSEExchangerangeUpper which is $ExchangeSchemaVersionName `r ”
Write-Output ” `r ”OR, using the Active Directory Cmdlets:
import-module ActiveDirectory
$ADForestConfigurationDN = ((Get-ADForest).PartitionsContainer) -Replace(‘CN=Partitions,’)
$ExchangeSchemaInfo = Get-ADObject “cn=ms-exch-schema-version-pt,cn=Schema,$ADForestConfigurationDN” -properties rangeupper
$ExchangeSchemaVersion = $ExchangeSchemaInfo.rangeupper
$ExchangeSchemaVersionName = $SchemaVersionTable.Get_Item(“$ExchangeSchemaVersion”)
Write-Output “The current Exchange Schema Version is $ExchangeSchemaVersion which is $ExchangeSchemaVersionName `r ”
Write-Output ” `r ”================
ACTIVE DIRECTORY
================Write-Verbose “Get AD Forest Prep Version”
$RootDSE= ([ADSI]””).distinguishedName
$RootDSEADObjectVersion =([ADSI]”LDAP://$rootDSEschemaNamingContext”).objectVersion
$ADSchemaVersionName = $SchemaVersionTable.Get_Item(“$RootDSEADObjectVersion”)
Write-Output “The current AD Schema Version is $RootDSEADObjectVersion which is $ADSchemaVersionName `r ”
Write-Output ” `r ”OR, using the Active Directory Cmdlets:
import-module ActiveDirectory
$ADForestConfigurationDN = ((Get-ADForest).PartitionsContainer) -Replace(‘CN=Partitions,’)
$ADSchemaInfo = Get-ADObject “cn=schema,$ADForestConfigurationDN” -properties objectversion
$ADSchemaVersion = $ADSchemaInfo.objectversion
Write-Output “The current AD Schema Version is $RootDSEADObjectVersion which is $ADSchemaVersionName `r ”
Write-Output ” `r “
 
                
                                                                
Recent Comments