如何从加入域的工作站检查AD DS域/林功能级别?


Answers:


10

以下Powershell不需要管理员或域管理员访问权限,我已经作为受限用户在具有Powershell v2 / v3的加入域的工作站上进行了测试。它不需要任何第三方工具或Powershell模块。

$dse = ([ADSI] "LDAP://RootDSE")

# Domain Controller Functional Level
$dse.domainControllerFunctionality

# Domain Functional Level
$dse.domainFunctionality

# Forest Functional Level
$dse.forestFunctionality

返回的值将代表不同的功能级别:

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

参考文献:


3

这只是对已接受答案的补充解决方案,因为我在这里或多或少地遇到了同样的需求。区别在于将一级名称解码:

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}

1
+1。值得注意的是,您需要Microsoft Powershell AD模块。ADSI示例没有。
jscott 2015年

你说得对,编辑它..
ErikE

小改进。-identity $ForestRoot从连接到要查询的目录林的计算机上运行它时,实际上不需要包括get-adforest命令的各个部分。该cmdlet只会获取当前计算机的信息。
Ryan Bolger

2

您只是要检查它还是要实际更改它?对其进行更改将需要对域/林的某些管理权限。

在没有dsquery或PS Get-ADDomain(需要导入AD模块)的情况下,我想到的最简单的方法是使用Joeware的ADFIND命令。

http://www.joeware.net/freetools/tools/adfind/

adfind -rootdse domaincontrollerfunctionality domainfunctionality forestfunctionality

我的域的示例输出:

AdFind V01.47.00cpp Joe Richards(joe@joeware.net)2012年10月

使用服务器:DOMAIN-DC1.hahaha.local:389

目录:Windows Server 2008 R2

dn:

domainFunctionality:4 [Windows Server 2008 R2域模式]

forestFunctionality:4 [Windows Server 2008 R2森林模式]

domainController功能:4 [Windows Server 2008 R2模式]

1对象返回


1

对于基于GUI的方法,可以使用Active Directory Explorer。右键单击域顶部节点,单击“属性”,然后检查domainControllerFunctionality,domainFunctionality或forestFunctionality的值。它们具有对应于的整数值:

0 = Win 2000
1 = Win 2003混合/中期
2 = Win 2003
3 = Win 2008
4 = Win 2008 R2
5 = Win 2012
6 = Win 2012 R2
7 = Win 2016


0

您需要以不同的方式提出这个问题,因为我不确定您要尝试做的是什么。读取的方式是,您想要一个Powershell脚本或批处理文件,该脚本或批处理文件可以执行非常有管理性的任务,而无需以用户身份运行能够执行那些任务。如果这是您要的内容,那么按设计不可能。

但是,如果您要从工作站管理AD,请向用户提供一个脚本,该脚本可以运行用户否则将无法执行的命令(即,您要从非特权服务帐户查询AD),我们需要知道您正在使用哪个版本的Powershell,以及您正在使用哪个版本的Server。

您可能还考虑将AD Web服务用于一次要委派的任务。

从TechNet帖子中:运行以下DSQUERY

Dsquery * CN =分区,CN =配置,DC = Mydomain,DC = com -scope base -attr msDS-行为版本

输出:msDS-行为版本2

指示DFL和FFL的属性:-森林级别设置

名称:msDS-行为版本路径:CN =分区,CN =配置,DC =,DC = com

值:0或未设置=混合林

1 = Windows Server 2003临时林级别2 = Windows Server 2003林级别3 = Windows Server 2008林级别

  • 域级别设置

名称:msDS-行为版本路径:DC =,DC =,DC = com(域根)值:0或未设置=混合级别域

1 = Windows Server 2003域级别2 = Windows Server 2003域级别3 = Windows Server 2008域级别

  • 混合/本机模式设置

名称:ntMixedDomain

路径:DC =,DC =,DC = com(域根)

值:0 =本地级别域1 =混合级别域

我不确定用户要执行此操作的角色要求,但是您不会对其进行任何更改,并且都使用DSQUERY(从RSAT,可从Microsoft免费下载)。如果需要查看它的结尾,请发表评论。


我的问题是一种情况,比如说不是域管理员的IT部门成员需要快速验证/仔细检查域/林功能级别,而不会打扰应该知道并且拥有所有适当控制台和工具的域管理员。 ..任何快速简单的方法都对我
Mikhail

1
我知道这个问题是“如何完成”的练习,但是我无法想到一个单独的场景,即没有适当权限的IT团队成员需要在他们的工作。
joeqwerty

我在一家大公司工作,这种信息对这样的公司很有用。这是一个示例:您所在的域具有DC老化的域,并且您需要实现较新的FL的功能才能满足票务请求。您可能对已经超负荷的域管理员不满意。为了进行必要的升级,您必须将流程汇总在一起,这纯粹是研究过程,因此您可以将变更请求汇总在一起-这是ITIL的要求。在这种情况下这将非常有用。
user1467163
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.