Mikhail Asked: 2013-06-01 01:58:41 +0800 CST2013-06-01 01:58:41 +0800 CST 2013-06-01 01:58:41 +0800 CST 如何从加入域的工作站检查 AD DS 域/林功能级别? 772 是否可以从加入域的工作站定义 AD DS 域/林功能级别?最好通过 CLI/PS,如果可能的话,没有域管理员权限……我该如何完成? domain 5 个回答 Voted Best Answer jscott 2013-06-01T05:31:50+08:002013-06-01T05:31:50+08:00 以下 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 参考: [MS-ADTS] msDS-行为版本:林功能级别 [MS-ADTS] msDS-行为版本:域 NC 功能级别 [MS-ADTS] msDS-行为版本:DC 功能级别 ErikE 2015-06-11T03:04:34+08:002015-06-11T03:04:34+08:00 只是对已接受答案的补充解决方案,因为我或多或少出于同样的需要而来到这里。不同之处在于获得解码的级别名称: 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} TheCleaner 2013-06-01T05:15:10+08:002013-06-01T05:15:10+08:00 您只是想检查它还是实际更改它?更改它需要域/林的某些管理权限。 在没有 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: 域功能:4 [Windows Server 2008 R2 域模式] forestFunctionality:4 [Windows Server 2008 R2 森林模式] domainControllerFunctionality:4 [Windows Server 2008 R2 模式] 1 对象返回 bogdan 2017-01-11T05:06:26+08:002017-01-11T05:06:26+08:00 对于基于 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 user1467163 2013-06-01T04:49:44+08:002013-06-01T04:49:44+08:00 您需要以不同的方式问这个问题,因为我不确定您要尝试做什么-读起来的方式是您想要一个 powershell 脚本或批处理文件,它可以执行极其管理的任务,而无需以用户身份运行能够执行那些任务。如果那是您要问的,那么设计是不可能的。 但是,如果您询问从工作站管理 AD,通过向用户提供一个脚本,该脚本可以运行用户否则无法执行的命令(即您想从非特权服务帐户查询 AD),我们需要知道您使用的是什么版本的 Powershell,以及您使用的是什么版本的服务器。 您还可以考虑将 AD Web 服务用于您希望委派的一次一个任务。 来自 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-Version 路径:CN=Partitions, CN=Configuration, DC=, DC=com 值:0或不设置=混交林 1=Windows Server 2003 临时林级别 2=Windows Server 2003 林级别 3=Windows Server 2008 林级别 域级别设置 名称:msDS-Behavior-Version 路径:DC=, DC=, DC=com (domain root) Value: 0 or not set=mixed level domain 1=Windows Server 2003 域级别 2=Windows Server 2003 域级别 3=Windows Server 2008 域级别 混合/本机模式设置 名称:ntMixedDomain 路径:DC=、DC=、DC=com(域根) 值:0=原生级别域 1=混合级别域 我不确定运行它的用户的角色要求,但你没有用它改变任何东西,它全部使用 DSQUERY(来自 RSAT,从 Microsoft 免费下载)。如果我们需要查看它的那一端,请发表评论。
以下 Powershell 不需要管理员或域管理员访问权限,我已经在具有 Powershell v2/v3 的已加入域的工作站上作为受限用户进行了测试。它不需要任何第三方工具或 Powershell 模块。
返回的值将代表不同的功能级别:
参考:
只是对已接受答案的补充解决方案,因为我或多或少出于同样的需要而来到这里。不同之处在于获得解码的级别名称:
您只是想检查它还是实际更改它?更改它需要域/林的某些管理权限。
在没有 dsquery 或 PS Get-ADDomain(需要导入 AD 模块)的情况下,我能想到的最简单方法是使用 Joeware 的 ADFIND 命令。
http://www.joeware.net/freetools/tools/adfind/
我的域的示例输出:
对于基于 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
您需要以不同的方式问这个问题,因为我不确定您要尝试做什么-读起来的方式是您想要一个 powershell 脚本或批处理文件,它可以执行极其管理的任务,而无需以用户身份运行能够执行那些任务。如果那是您要问的,那么设计是不可能的。
但是,如果您询问从工作站管理 AD,通过向用户提供一个脚本,该脚本可以运行用户否则无法执行的命令(即您想从非特权服务帐户查询 AD),我们需要知道您使用的是什么版本的 Powershell,以及您使用的是什么版本的服务器。
您还可以考虑将 AD Web 服务用于您希望委派的一次一个任务。
来自 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-Version 路径:CN=Partitions, CN=Configuration, DC=, DC=com
值:0或不设置=混交林
1=Windows Server 2003 临时林级别 2=Windows Server 2003 林级别 3=Windows Server 2008 林级别
名称:msDS-Behavior-Version 路径:DC=, DC=, DC=com (domain root) Value: 0 or not set=mixed level domain
1=Windows Server 2003 域级别 2=Windows Server 2003 域级别 3=Windows Server 2008 域级别
名称:ntMixedDomain
路径:DC=、DC=、DC=com(域根)
值:0=原生级别域 1=混合级别域
我不确定运行它的用户的角色要求,但你没有用它改变任何东西,它全部使用 DSQUERY(来自 RSAT,从 Microsoft 免费下载)。如果我们需要查看它的那一端,请发表评论。