При закладі нового користувача в домені 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.

Leave a Reply

Your email address will not be published. Required fields are marked *