Respuestas:
El siguiente Powershell no requiere acceso de administrador o administrador de dominio, lo probé como usuario limitado en una estación de trabajo unida a dominio con Powershell v2 / v3. No requiere herramientas de terceros ni módulos de Powershell.
$dse = ([ADSI] "LDAP://RootDSE")
# Domain Controller Functional Level
$dse.domainControllerFunctionality
# Domain Functional Level
$dse.domainFunctionality
# Forest Functional Level
$dse.forestFunctionality
Los valores devueltos representarán un nivel funcional distinto:
Value 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
Referencias
Solo una solución complementaria a la respuesta aceptada, ya que terminé aquí más o menos con la misma necesidad. La diferencia es que se decodifica el nombre del nivel:
Import-Module ActiveDirectory
$ForestRoot = 'top.domain'
(get-adforest -identity $ForestRoot).ForestMode
(get-adforest -identity $ForestRoot).Domains |
ForEach-Object {Get-ADDomain -Identity $_ |
ft DNSRoot,DomainMode -AutoSize}
-identity $ForestRoot
porciones de los comandos get-adforest cuando lo ejecuta desde una máquina unida al bosque que está intentando consultar. El cmdlet solo recogerá la información de la máquina actual.
¿Solo quieres comprobarlo o cambiarlo? Cambiarlo requeriría ciertos derechos administrativos en el dominio / bosque.
La forma más fácil que se me ocurre sin dsquery o PS Get-ADDomain (que requeriría importar el módulo AD) es usar el comando ADFIND de Joeware.
http://www.joeware.net/freetools/tools/adfind/
adfind -rootdse domaincontrollerfunctionality domainfunctionality forestfunctionality
Ejemplo de salida de mi dominio:
AdFind V01.47.00cpp Joe Richards (joe@joeware.net) Octubre de 2012
Usando el servidor: DOMAIN-DC1.hahaha.local: 389
Directorio: Windows Server 2008 R2
dn:
domainFunctionality: 4 [Modo de dominio de Windows Server 2008 R2]
forestFunctionality: 4 [Windows Forest 2008 R2 Forest Mode]
domainControllerFunctionality: 4 [Modo Windows Server 2008 R2]
1 Objetos devueltos
Para un enfoque basado en GUI puede usar Active Directory Explorer . Haga clic derecho en el nodo superior del dominio, haga clic en Propiedades y verifique el valor de domainControllerFunctionality, domainFunctionality o forestFunctionality. Tienen valores enteros correspondientes a:
0 = Gana 2000
1 = Gana 2003 mixto / intermedio
2 = Gana 2003
3 = Gana 2008
4 = Gana 2008 R2
5 = Gana 2012
6 = Gana 2012 R2
7 = Gana 2016
Debe hacer esta pregunta de manera un poco diferente, porque no estoy seguro de lo que está tratando de hacer. La forma en que esto se lee es que desea un script de PowerShell o un archivo por lotes que pueda realizar tareas extremadamente administrativas sin ejecutarse como un usuario capaz de realizar esas tareas. Si eso es lo que está preguntando, no es posible, por diseño.
Sin embargo, si está preguntando sobre la administración de AD desde una estación de trabajo, al entregarle a un usuario un script que puede ejecutar comandos que el usuario de otra manera no podría (es decir, si desea consultar AD desde una cuenta de servicio no privilegiada), necesitamos saber qué versión de Powershell está utilizando y qué versión de servidor está utilizando.
También puede considerar los servicios web de AD para las tareas individuales que desea delegar.
Desde una publicación de TechNet: Ejecute el DSQUERY a continuación
Dsquery * CN = Particiones, CN = Configuración, DC = Mydomain, DC = com -scope base -attr msDS-Behavior-Version
Salida: msDS-Behavior-Version 2
Los atributos que indican DFL y FFL: - Configuración de nivel de bosque
Nombre: msDS-Behavior-Version Ruta: CN = Particiones, CN = Configuración, DC =, DC = com
Valor: 0 o no establecido = bosque de nivel mixto
1 = nivel de bosque provisional de Windows Server 2003 2 = nivel de bosque de Windows Server 2003 3 = nivel de bosque de Windows Server 2008
Nombre: msDS-Behavior-Version Ruta: DC =, DC =, DC = com (raíz del dominio) Valor: 0 o no establecido = dominio de nivel mixto
1 = nivel de dominio de Windows Server 2003 2 = nivel de dominio de Windows Server 2003 3 = nivel de dominio de Windows Server 2008
Nombre: ntMixedDomain
Ruta: DC =, DC =, DC = com (raíz del dominio)
Valor: 0 = dominio de nivel nativo 1 = dominio de nivel mixto
No estoy seguro acerca de los requisitos de rol del usuario para ejecutar esto, pero no está cambiando nada y todo está usando DSQUERY (desde el RSAT, descarga gratuita desde Microsoft). Comenta si necesitamos ver ese extremo.