Respostas:
O Powershell a seguir não exige acesso de administrador ou de administrador de domínio, testei como um usuário limitado em uma estação de trabalho ingressada no domínio com o Powershell v2 / v3. Não requer ferramentas de terceiros ou módulos do Powershell.
$dse = ([ADSI] "LDAP://RootDSE")
# Domain Controller Functional Level
$dse.domainControllerFunctionality
# Domain Functional Level
$dse.domainFunctionality
# Forest Functional Level
$dse.forestFunctionality
Os valores retornados representarão um nível 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
Referências:
Apenas uma solução complementar à resposta aceita, pois acabei aqui mais ou menos com a mesma necessidade. A diferença é que se obtém o nome do nível decodificado:
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
partes dos comandos get-adforest ao executá-lo em uma máquina associada à floresta que está tentando consultar. O cmdlet apenas coletará as informações da máquina atual.
Você só quer verificá-lo ou realmente mudar? Mudá-lo exigiria certos direitos administrativos no domínio / floresta.
A maneira mais fácil de pensar sem o dsquery ou o PS Get-ADDomain (que exigiria a importação do módulo AD) é usar o comando ADFIND do Joeware.
http://www.joeware.net/freetools/tools/adfind/
adfind -rootdse domaincontrollerfunctionality domainfunctionality forestfunctionality
Exemplo de saída do meu domínio:
AdFind V01.47.00cpp Joe Richards (joe@joeware.net) outubro de 2012
Usando o servidor: DOMAIN-DC1.hahaha.local: 389
Diretório: Windows Server 2008 R2
dn:
domainFunctionality: 4 [Modo de domínio do Windows Server 2008 R2]
forestFunctionality: 4 [Modo de floresta do Windows Server 2008 R2]
domainControllerFunctionality: 4 [Modo Windows Server 2008 R2]
1 Objetos retornados
Para uma abordagem baseada em GUI, você pode usar o Active Directory Explorer . Clique com o botão direito do mouse no nó superior do domínio, clique em Propriedades e verifique o valor de domainControllerFunctionality, domainFunctionality ou forestFunctionality. Eles têm valores inteiros correspondentes a:
0 = Vitória 2000
1 = Vitória 2003 mista / intermediária
2 = Vitória 2003
3 = Vitória 2008
4 = Vitória 2008 R2
5 = Vitória 2012
6 = Vitória 2012 R2
7 = Vitória 2016
Você precisa fazer essa pergunta de maneira um pouco diferente, porque não tenho certeza do que está tentando fazer. A maneira como se lê é que você deseja um script do PowerShell ou um arquivo em lotes que possa executar tarefas extremamente administrativas sem executar como usuário. capaz de executar essas tarefas. Se é isso que você está perguntando, não é possível, por design.
No entanto, se você estiver perguntando sobre a administração do AD a partir de uma estação de trabalho, entregando ao usuário um script que pode executar comandos que o usuário não conseguiria (por exemplo, você deseja consultar o AD a partir de uma conta de serviço sem privilégios), precisaríamos saber qual versão do Powershell você está usando e qual versão do servidor você está usando.
Você também pode considerar os serviços da Web do AD para tarefas únicas que deseja delegar.
Em uma publicação do TechNet: Execute o DSQUERY abaixo
Dsquery * CN = Partições, CN = Configuração, DC = Meu Domínio, DC = com -scope base -attr msDS-Behavior-Version
Saída: msDS-Behavior-Version 2
Os atributos que indicam DFL e FFL: - Configuração de nível de floresta
Nome: Caminho da versão do comportamento da msDS: CN = Partições, CN = Configuração, DC =, DC = com
Valor: 0 ou não definido = floresta de nível misto
1 = nível de floresta provisória do Windows Server 2003 2 = nível de floresta do Windows Server 2003 3 = nível de floresta do Windows Server 2008
Nome: Caminho da versão de comportamento-msDS: DC =, DC =, DC = com (raiz do domínio) Valor: 0 ou não definido = domínio de nível misto
1 = nível de domínio do Windows Server 2003 2 = nível de domínio do Windows Server 2003 3 = nível de domínio do Windows Server 2008
Nome: ntMixedDomain
Caminho: DC =, DC =, DC = com (raiz do domínio)
Valor: 0 = Domínio de nível nativo 1 = Domínio de nível misto
Não tenho certeza dos requisitos de função do usuário para executar isso, mas você não está alterando nada com isso e tudo está usando o DSQUERY (no RSAT, download gratuito da Microsoft). Comente se precisarmos olhar para esse fim.