Скопировать группы Active Directory другому пользователю через PowerShell

При заведении нового пользователя в домене AD иногда нужно включить его в большое количество групп. Добавлять пользователя в группы через консоль ADUC довольно утомительно, поэтому иногда проще скопировать членство в группах одного пользователя и применить его к другому с помощью скрипта PowerShell. Это также удобно, когда из определенного отдела увольняется сотрудник и нужно назначить новому человеку те же самые группы доступа.

Допустим, вам нужно скопировать группы пользователя r.radojic и добавить в эти же группы нового пользователя a.novak.

скопировать группы active directory другого пользователя

Для работы следующих команд используется модуль Active Directory для PowerShell, который можно установить в составе пакета администратпрования RSAT или скопировать и импортировать модуль вручную без установки RSAT.

С помощью командлета Get-ADUser получим список групп пользователя-источника:

$getusergroups = Get-ADUser -Identity r.radojic -Properties memberof | Select-Object -ExpandProperty memberof

получить список AD групп пользователя

Чтобы добавить нового пользователя в те же группы, достаточно отправить полученный список групп через пайп командлету Add-ADGroupMember:

$getusergroups | Add-ADGroupMember -Members a.novak -verbose

Для добавления пользователя в доменную группу нужно запускать команды из-под учетной записи с правами администратора домена, или пользователем, которому делегированы права на добавление в группы.

Active Directory скопировать членство в группах от одного пользователя ддругому

Теперь проверьте, что новый пользователь был успешно добавлен в те же группы, что и исходный.

Get-ADUser -Identity a.novak -Properties memberof | Select-Object -ExpandProperty memberof

Можно использовать универсальный командлет Get-ADPrincipalGroupMembership, который позволит скопировать членство в группах любого объекта AD: будь то пользователь, или компьютер.

$userSource= “r.radojic"

$userTarget=”a.novak”
$sourceGroups = Get-ADPrincipalGroupMembership -Identity $userSource
Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $sourceGroups

Можно использовать PowerShell скрипт, который автоматически пишет текстовый лог файл с информацией о добавлении пользователя в группы:

$logfile="c:\ps\CopyAdGroup.log"
$userSource= “r.radojic"
$userTarget=”a.novak”
$Time = Get-Date
Add-content $logfile -value $Time -Encoding UTF8
Add-content $logfile -value "_______________"
Add-content $logfile -value "Копирование групп AD с пользователя $userSource на $userTarget" -Encoding UTF8
$sourceGroups = (Get-ADPrincipalGroupMembership -Identity $userSource).SamAccountName
foreach ($group in $sourceGroups)
{
Add-content $logfile -value "Добавление пользователя $userTarget в группу $group" -Encoding UTF8
try
{
$log=Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $group
Add-content $logfile -value $log -Encoding UTF8

}
catch
{
Add-content $logfile $($Error[0].Exception.Message) -Encoding UTF8
Continue
}
}
Add-content $logfile -value "_______________"

лог копирования групп пользователя

Также вы можете отслеживать добавление пользователей в группы AD в журналах контроллеров домена.

Еще одна достаточно частая задача – скопировать всех пользователей из одной доменной группы в другую. Можно использовать такую команду:

Get-ADGroupMember "SPB-GPO-Admins" | ForEach-Object { Add-ADGroupMember "SPB-Server-Admins" -Members $_ }

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


Предыдущая статья Следующая статья


Комментариев: 6 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)