Управление FSMO ролями Active Directory с помощью Powershell
Тематические термины: Active Directory, FSMO, Powershell.
В Active Directory Domain Services представлено 5 хозяев операций или FSMO-ролей:
- Schema Master (Мастер схемы).
- Domain Naming Master (Мастер доменных имён).
- RID Master (Мастер относительных идентификаторов).
- PDC Emulator (Эмулятор основного контроллера).
- Infrastructure Master (Мастер инфраструктуры).
Ниже представлен базовый список команд на Powershell, который чаще всего применяется для управления данными ролями.
Просмотр ролей и серверов с данными ролями
Передача ролей на другой сервер
Захват роли
Решение возможных проблем
Просмотр
Узнать FSMO-роли мастеров уровня леса:
Get-ADForest dmosk.local | ft DomainNamingMaster, SchemaMaster
* в данном примере, на экран будут выведены имена серверов с ролями для домена dmosk.local.
Просмотр мастеров уровня домена:
Get-ADDomain dmosk.local | ft InfrastructureMaster, PDCEmulator, RIDMaster
* для домена dmosk.local система отобразит сервера, на которых работают RID мастер, мастер инфраструктуры и PDC эмулятор.
P.S. Можно также посмотреть список ролей и серверов, которые их выполняют командой:
netdom query fsmo
Передача
Передачу мы делаем с сервера, на котором в данный момент находится роль.
Передать одну FSMO-роль на другой контроллер домена:
Move-ADDirectoryServerOperationMasterRole "dc2" PDCEmulator
* в примере будет перенесена роль PDC эмулятор на сервер с именем dc2.
Перенести несколько ролей:
Move-ADDirectoryServerOperationMasterRole -Identity "dc1" -OperationMasterRole DomainNamingMaster, SchemaMaster, RIDMaster, PDCEmulator, InfrastructureMaster
* команда передаст все 5 ролей на сервер dc1.
Захват
Захват выполняется в тех случаях, когда контроллер домена выходит из строя и его нельзя восстанавить. Таким образом, передать роль невозможно из-за отсутствия носителя FSMO.
Powershell
Как и с переносом, мы можем воспользоваться Powershell с добавлением опции Force:
Move-ADDirectoryServerOperationMasterRole -Identity "dc3" -OperationMasterRole DomainNamingMaster, SchemaMaster, RIDMaster, PDCEmulator, InfrastructureMaster -Force
* в данном примере мы собираемся перенести все роли на сервер dc3.
... на запрос точно ли мы хотим перенести роль мастера, ответим «Да для всех» (A):
Move Operation Master Role
Do you want to move role 'DomainNamingMaster' to server 'dc3.dmosk.local' ?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): A
NTDSUTIL
Также можно выполнить захват роли с помощью утилиты NTDSUTIL. Это акажется актуальным для серверов с устаревшей (или отсутствующей) версией Powershell, которая не позволит сделать захват.
Для этого на контроллере домена запускаем команду ntdsutil и последовательно вводим:
- roles
- connections
- connect to server <имя сервера>
- quit
Теперь вводим команду для захвата конкретной роли:
- seize schema master
- seize domain naming master
- seize pdc
- seize rid master
- seize infrastructure master
Для выхода вводим quit.
Возможные ошибки
Рассмотрим ошибки, с которыми столкнулся я.
Move-ADDirectoryServerOperationMasterRole : Отказано в доступе
При попытке передать роль мы получаем ошибку прав доступа.
Причина: для данной операции учетная запись, под которой мы работает должна иметь нужные права доступа. Для этого пользователь должен входить в группы:
- Schema Master — Администратор схемы.
- Domain Naming Master — Администратор предприятия.
- RID Master — Администратор домена.
- PDC Emulator — Администратор домена
- Infrastructure Master — Администратор домена
Решение: проверяем, в каких группах состоит пользователь, под которым мы работает. Если обнаружили несоответствие, то либо входим в систему под другим пользователем с нужными правами, либо добавляем текущего пользователя в соответствующую группу.