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