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

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

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

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

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

С помощью командлета 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:psCopyAdGroup.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 "_______________"

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

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

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

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

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