We have a number of applications that authenticate to Active Directory. Invariably, when there are authentication issues, the vendor support person asks “what version of AD is this?” … not an unreasonable question, but also not something the person who supports Application XYZ is apt to know in a larger company. Fortunately, there are a few places within the directory that you can find details about AD versions.
The simplest is the version of Windows the domain controllers are running … although it’s possible domain controllers have been upgraded but the AD functional level has not yet been changed.
ldapsearch -h ad.example.com -D "ldapquery@example.com" -w "P@s54LD@pQu3ry" -p389 -b "ou=domain controllers,dc=example,dc=com" "(&(objectClass=computer))" operatingSystem
CN=dc007,OU=Domain Controllers,dc=example,DC=com
operatingSystem=Windows Server 2019 Datacenter
CN=dc008,OU=Domain Controllers,dc=example,DC=com
operatingSystem=Windows Server 2019 Datacenter
CN=dc020,OU=Domain Controllers,dc=example,DC=com
operatingSystem=Windows Server 2019 Datacenter
CN=dc021,OU=Domain Controllers,dc=example,DC=com
operatingSystem=Windows Server 2019 Datacenter
You can also find the objectVersion of the schema:
ldapsearch -h ad.example.com -D "ldapquery@example.com" -w "P@s54LD@pQu3ry" -p389 -b "cn=schema,cn=configuration,dc=example,dc=com" "(&(objectVersion=*))" objectVersion
CN=Schema,CN=Configuration,dc=example,DC=com
objectVersion=88
What does 88 mean? It depends! Either Windows 2019 or 2022
Version | Operating System |
---|---|
13 | Windows 2000 Server |
30 | Windows Server 2003 (Before R2) |
31 | Windows Server 2003 R2 |
44 | Windows Server 2008 (Before R2) |
47 | Windows Server 2008 R2 |
56 | Windows Server 2012 |
69 | Windows Server 2012 R2 |
87 | Windows Server 2016 |
88 | Windows Server 2019 |
88 | Windows Server 2022 |
Or the functional level of the forest and its partitions:
ldapsearch -H ldap://ad.example.com -D "ldapquery@example.com" -w "P@s54LD@pQu3ry" -b "cn=partitions,cn=configuration,dc=example,dc=com" "(&(MSDS-Behavior-Version=*))" MSDS-Behavior-Version
dn: CN=Partitions,CN=Configuration,DC=example,DC=com
msDS-Behavior-Version: 7
dn: CN=EXAMPLE,CN=Partitions,CN=Configuration,DC=example,DC=com
msDS-Behavior-Version: 7
What does 7 mean? Well, that depends too. It’s either Windows 2016 or 2019!
msDS-Behavior-Version | Forest |
Domain | Domain Controller |
0 | 2000 | 2000 Mixed / Native | 2000 |
1 | 2003 Interim | 2003 Interim | N/A |
2 | 2003 | 2003 | 2003 |
3 | 2008 | 2008 | 2008 |
4 | 2008 R2 | 2008 R2 | 2008 R2 |
5 | 2012 | 2012 | 2012 |
6 | 2012 R2 | 2012 R2 | 2012 R2 |
7 | 2016 | 2016 | 2016 |
7 | 2019 | 2019 | 2019 |