Risposte:
Il seguente Powershell non richiede l'accesso dell'amministratore o dell'amministratore del dominio, l'ho testato come utente limitato su una workstation collegata al dominio con Powershell v2 / v3. Non richiede strumenti di terze parti o moduli Powershell.
$dse = ([ADSI] "LDAP://RootDSE")
# Domain Controller Functional Level
$dse.domainControllerFunctionality
# Domain Functional Level
$dse.domainFunctionality
# Forest Functional Level
$dse.forestFunctionality
I valori restituiti rappresenteranno un livello funzionale 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
Riferimenti:
Solo una soluzione complementare alla risposta accettata, dato che sono finito qui più o meno con lo stesso bisogno. La differenza è che si ottiene la decodifica del nome del livello:
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
parti dei comandi get-adforest quando lo si esegue da una macchina unita alla foresta che si sta tentando di interrogare. Il cmdlet raccoglierà solo le informazioni della macchina corrente.
Vuoi solo controllarlo o effettivamente cambiarlo? La modifica richiederebbe determinati diritti amministrativi sul dominio / foresta.
Il modo più semplice a cui riesco a pensare senza dsquery o PS Get-ADDomain (che richiederebbe l'importazione del modulo AD) è usare il comando ADFIND di Joeware.
http://www.joeware.net/freetools/tools/adfind/
adfind -rootdse domaincontrollerfunctionality domainfunctionality forestfunctionality
Esempio di output dal mio dominio:
AdFind V01.47.00cpp Joe Richards (joe@joeware.net) ottobre 2012
Utilizzando il server: DOMAIN-DC1.hahaha.local: 389
Directory: Windows Server 2008 R2
dn:
domainFunctionality: 4 [Modalità dominio Windows Server 2008 R2]
forestFunctionality: 4 [Modalità foresta di Windows Server 2008 R2]
domainControllerFunctionality: 4 [Modalità Windows Server 2008 R2]
1 oggetti restituiti
Per un approccio basato sulla GUI è possibile utilizzare Active Directory Explorer . Fare clic con il tasto destro del mouse sul nodo superiore del dominio, fare clic su Proprietà e verificare il valore di domainControllerFunctionality, domainFunctionality o forestFunctionality. Hanno valori interi corrispondenti a:
0 = Win 2000
1 = Win 2003 misto / intermedio
2 = Win 2003
3 = Win 2008
4 = Win 2008 R2
5 = Win 2012
6 = Win 2012 R2
7 = Win 2016
È necessario porre questa domanda in modo leggermente diverso, perché non sono sicuro di cosa si stia tentando di fare. Il modo in cui si legge è che si desidera uno script PowerShell o un file batch in grado di eseguire attività estremamente amministrative senza essere eseguito come utente che è in grado di svolgere tali compiti. Se è quello che stai chiedendo, non è possibile, in base alla progettazione.
Tuttavia, se stai chiedendo di amministrare AD da una stazione di lavoro, consegnando a un utente uno script in grado di eseguire comandi che altrimenti l'utente non sarebbe in grado di fare (ovvero che desideri interrogare AD da un account di servizio senza privilegi), avremmo bisogno di sapere quale versione di Powershell stai usando e quale versione di Server stai usando.
È inoltre possibile prendere in considerazione i servizi Web AD per le attività singole che si desidera delegare.
Da un post TechNet: eseguire il DSQUERY di seguito
Dsquery * CN = Partitions, CN = Configuration, DC = Mydomain, DC = com -scope base -attr msDS-Behavior-Version
Output: msDS-Behavior-Versione 2
Gli attributi che indicano DFL e FFL: - Impostazione del livello di foresta
Nome: msDS-Behavior-Version Path: CN = Partitions, CN = Configuration, DC =, DC = com
Valore: 0 o non impostato = foresta a livello misto
1 = Livello foresta provvisorio di Windows Server 2003 2 = Livello foresta Windows Server 2003 3 = Livello foresta Windows Server 2008
Nome: msDS-Behavior-Version Path: DC =, DC =, DC = com (root del dominio) Valore: 0 o non impostato = dominio di livello misto
1 = Livello di dominio di Windows Server 2003 2 = Livello di dominio di Windows Server 2003 3 = Livello di dominio di Windows Server 2008
Nome: ntMixedDomain
Percorso: DC =, DC =, DC = com (root del dominio)
Valore: 0 = Dominio di livello nativo 1 = Dominio di livello misto
Non sono sicuro dei requisiti di ruolo dell'utente per eseguire questo, ma non stai cambiando nulla con esso ed è tutto usando DSQUERY (Da RSAT, download gratuito da Microsoft). Commenta se dobbiamo guardare a quel fine.