Когда в инфраструктуре существует несколько лесов, то при настройке доступа к ресурсам нужно придерживаться простого правила: к ресурсу привязывается локальная группа, в которую включаются глобальные группы с пользователями из разных доменов/лесов.
Если этот принцип нарушен, и к ресурсу привязана глобальная группа, то невозможно в нее включить «чужих» пользователей и дать им доступ к ресурсу. Когда администратору надо срочно дать доступ к ресурсу пользователям из другого леса, то обычно в такой ситуации он преобразует глобальную группу в универсальную, затем в локальную и тут же добавляет в нее учетку, т.к. создание глобальной группы в другом лесе может потребовать дополнительных усилий: жалко времени, либо нужно привлечь другого администратора, провести согласование и утверждение и т.д.
Время идет, и инфраструктура засоряется такими мелочами по самую крышу. В один прекрасный момент все понимают, что нужно навести порядок с группами. Искать проблемные группы вручную и тем более вручную переносить пользователей из одной группы в другую это слишком трудоемко. Ниже описано, как использовать для этой задачи Powershell.
Получить список всех локальных групп (в текущем домене):
$LGs = Get-ADGroup -LDAPFilter «(&(&(&(objectCategory=group)(objectClass=group)(grouptype=-2147483644))))»
Получить список групп, у которых в членах группы есть пользователи:
$LGs1 = $LGs | ? { Get-ADGroupMember $_ | ? {$_.ObjectClass -eq «user»} }
Вывести список для анализа:
$LGs1 | % { $_.Name} | sort
После анализа остается переместить пользователей из локальной группы в нужные глобальные.
Скопировать пользователей из одной группы в другую:
Get-ADGroupMember «имя группы ОТкуда» | ? {$_.ObjectClass -eq «user»} | % { Add-ADGroupMember «имя группы КУДА» -Server «TO.domain.ru» -Members $_ -ErrorAction SilentlyContinue }
Здесь:
· «имя группы ОТкуда» — одна из локальных групп найденных выше
· «TO.domain.ru» — соответствующая ей глобальная группа в домене, к которому относятся копируемые пользователи
· -ErrorAction SilentlyContinue помогает нам избежать явной фильтрации учетных записей пользователей: только учетки «того» леса могут быть добавлены в глобальную группу «того же» леса — остальные просто отсеются.
Легкой вам уборки мусора!
Filed under: Active Directory, Powershell | Tagged: Active Directory, Powershell | Leave a comment »