Как проверить уровень домена / леса AD DS с рабочей станции, присоединенной к домену?

8

Можно ли определить доменные / лесные функциональные уровни AD DS с присоединенной к домену рабочей станции? Желательно через CLI / PS и, если возможно, без прав администратора домена ... Как я могу это сделать?

Михаил
источник

Ответы:

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

Ссылки:

jscott
источник
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}
ErikE
источник
1
+1. Стоит отметить, что вам необходим модуль Microsoft Powershell AD. Пример ADSI нет.
Jscott
Правильно, редактируешь это в ..
ErikE
Незначительное улучшение На самом деле вам не нужно включать -identity $ForestRootчасти команд get-adforest, когда вы запускаете их с компьютера, подключенного к лесу, к которому вы пытаетесь выполнить запрос. Командлет просто получит информацию о текущей машине.
Райан Болджер
2

Вы просто хотите это проверить или изменить? Изменение этого потребовало бы определенных административных прав на домен / лес.

Самым простым способом, который я могу придумать без dsquery или PS Get-ADDomain (который потребовал бы импорта модуля AD), является использование команды ADFIND от Joeware.

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

adfind -rootdse domaincontrollerfunctionality domainfunctionality forestfunctionality

Пример вывода из моего домена:

AdFind V01.47.00cpp Джо Ричардс (joe@joeware.net) октябрь 2012

Используя сервер: DOMAIN-DC1.hahaha.local: 389

Каталог: Windows Server 2008 R2

дп:

Функциональность домена: 4 [Режим домена Windows Server 2008 R2]

forestFunctionality: 4 [Лесной режим Windows Server 2008 R2]

domainControllerFunctionality: 4 [Режим Windows Server 2008 R2]

1 Объекты возвращены

Очиститель
источник
1

Для подхода на основе графического интерфейса вы можете использовать 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

Bogdan
источник
0

Вы должны задать этот вопрос немного по-другому, потому что я не уверен, что вы пытаетесь сделать. Это означает, что вам нужен скрипт powershell или пакетный файл, который может выполнять чрезвычайно административные задачи, не работая от имени пользователя, который способен выполнять эти задачи. Если это то, что вы спрашиваете, это не возможно, по замыслу.

Однако, если вы спрашиваете об администрировании AD с рабочей станции, то, передав пользователю скрипт, который может запускать команды, которые пользователь иначе не смог бы (т.е. вы хотите запросить AD из непривилегированной учетной записи службы), нам нужно знать какую версию Powershell вы используете и какую версию сервера вы используете.

Вы могли бы также рассмотреть веб-службы AD для единовременных задач, которые вы хотите делегировать.

Из сообщения TechNet: Запустите ниже DSQUERY

Dsquery * CN = разделы, CN = конфигурация, DC = мидомен, DC = базовая область действия -attr msDS-Behavior-Version

Вывод: msDS-Behavior-Version 2

Атрибуты, которые указывают DFL и FFL: - Настройка уровня леса

Имя: msDS-Behavior-Version Путь: CN = Разделы, CN = Конфигурация, DC =, DC = com

Значение: 0 или не установлено = смешанный лес уровня

1 = уровень промежуточного леса Windows Server 2003 2 = уровень леса Windows Server 2003 3 = уровень леса Windows Server 2008

  • Настройка уровня домена

Имя: msDS-Behavior-Version Путь: 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). Прокомментируйте, если нам нужно посмотреть на этот конец.

user1467163
источник
Мой вопрос касался ситуации, когда, скажем, сотрудник ИТ-отдела, которому не требуется администратор домена, должен быстро проверить / перепроверить функциональные уровни домена / леса, не беспокоя администраторов домена, которые должны знать и иметь все соответствующие консоли и инструменты для проверки. .. Любой быстрый и простой способ подойдет мне
Михаил
1
Я понимаю, что этот вопрос является упражнением «как это можно сделать», но, тем не менее, я не могу придумать ни одного сценария, когда член ИТ-команды, не имеющий соответствующих прав, должен был бы сделать это в ходе их работа.
Joeqwerty
Я работал в крупной фирме, и такая информация была бы полезна в такой компании. Вот пример: у вашего местоположения есть домен с устаревшими контроллерами домена, и вам нужно реализовать функцию более нового FL для выполнения запроса билета. Вы не можете быть дружелюбным с уже перегруженным администратором домена. Чтобы обосновать необходимость необходимых обновлений, вы должны собрать процесс, который является чисто исследовательским, чтобы вы могли получить запрос на изменение вместе - это требование ITIL. Это было бы очень полезно в такой ситуации.
user1467163