如何从域join的工作站检查AD DS域/林function级别?

是否可以从join的工作站定义AD DS域/森林function级别? 最好通过CLI / PS,如果可能的话没有域pipe理员权限…我怎么能做到这一点?

以下Powershell不需要pipe理员或域pipe理员访问权限,我已经作为Powershell v2 / v3join域的工作站上的受限用户进行了testing。 它不需要任何第三方工具或Powershell模块。

$dse = ([ADSI] "LDAP://RootDSE") # Domain Controller Functional Level $dse.domainControllerFunctionality # Domain Functional Level $dse.domainFunctionality # Forest Functional Level $dse.forestFunctionality 

返回的值将表示不同的function级别:

 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 

参考文献:

  • [MS-ADTS] msDS-Behavior-Version:林function级别
  • [MS-ADTS] msDS-Behavior-Version:域NCfunction级别
  • [MS-ADTS] msDS-Behavior-Version:DCfunction级别

你只是想检查它,或者实际上改变它? 更改它将需要域/森林的某些pipe理权限。

没有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([email protected])2012年10月

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

目录:Windows Server 2008 R2

DN:

domainFunctionality:4 [Windows Server 2008 R2 Domain Mode]

forestFunctionality:4 [Windows Server 2008 R2 Forest Mode]

domainControllerFunctionality:4 [Windows Server 2008 R2模式]

1个对象返回

只是对接受答案的一个补充解决scheme,因为我在这里或多或less地以相同的需求结束了。 不同之处在于一个获得解码的级别名称:

 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} 

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

0 = Win 2000
1 = Win 2003混合/临时
2 = Win 2003
3 =胜2008
4 = Win 2008 R2
5 =赢得2012年
6 =赢得2012 R2
7 =赢2016

您需要以不同的方式提出这个问题,因为我不确定你要做什么 – 这样读取的方式是,你需要一个PowerShell脚本或batch file,可以执行非常pipe理的任务,而无需以用户身份运行能够执行这些任务。 如果这就是你所要求的,那么devise是不可能的。

但是,如果您要询问有关从工作站pipe理AD的问题,请向用户提供一个可以运行命令的脚本,否则用户无法(即,您想从非特权服务帐户查询AD)发送命令,则需要知道你使用的是什么版本的Powershell,以及你使用的服务器版本是什么。

您可能还会考虑ADnetworking服务,以实现您希望委派的一次性任务。

从TechNet发布:运行以下DSQUERY

Dsquery * CN = Partitions,CN = Configuration,DC = Mydomain,DC = com -scope base -attr msDS-Behavior-Version

输出:msDS-Behavior-Version 2

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

名称:msDS-Behavior-Versionpath:CN = Partitions,CN = Configuration,DC =,DC = com

值:0或不设置=混合级森林

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

  • 域级别设置

名称:msDS-Behavior-Versionpath:DC =,DC =,DC = com(域根)值:0或不设置=混合级别域

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

  • 混合/纯模式设置

名称:ntMixedDomain

path:DC =,DC =,DC = com(域根)

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

我不确定用户的angular色需求是如何运行的,但是你并没有改变任何东西,而是全部使用DSQUERY(从RSAT免费下载)。 评论我们是否需要看看它的结局。