При закладі нового користувача в домені AD іноді потрібно включити його в велику кількість груп. Додавати користувача в групи через консоль ADUC досить утомливо, тому іноді простіше скопіювати членство в групах одного користувача і застосувати його до іншого за допомогою скрипта PowerShell. Це також зручно, коли з певного відділу звільняється співробітник і потрібно призначити новій людині ті ж самі групи доступу.
Припустимо, вам потрібно скопіювати групи користувача r.radojic і додати в ці ж групи нового користувача a.novak.
За допомогою командлета Get-ADUser отримаємо список груп користувача-джерела:
$getusergroups = Get-ADUser -Identity r.radojic -Properties memberof | Select-Object -ExpandProperty memberof
Щоб додати нового користувача в ті ж групи, досить відправити отриманий список груп через пайп Командлети Add-ADGroupMember:
$getusergroups | Add-ADGroupMember -Members a.novak -verbose
Тепер перевірте, що новий користувач був успішно доданий в ті ж групи, що і вихідний.
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.