Как скопировать членство в группе AD другому пользователю в PowerShell
Когда вы создаете нового пользователя в домене Active Directory, иногда вам необходимо сделать его членом большого количества групп. Добавлять пользователя в группы вручную через консоль ADUC довольно утомительно, поэтому проще скопировать членство в группе от одного пользователя к другому с помощью PowerShell-скрипта. Это также удобно, когда сотрудник покидает отдел вашей компании и вам нужно назначить новому сотруднику те же группы безопасности AD.
Предположим, вам нужно скопировать членство в группе у пользователя
jsantiи добавьте новую учетную запись пользователя (
a.adams) в те же группы.
Для запуска следующих сценариев PoSh используется модуль Active Directory для PowerShell. Вы можете установить его как часть набора инструментов RSAT или скопировать и импортировать модуль AD PowerShell вручную без установки RSAT.
Получите список групп исходного пользователя с помощью командлета Get-ADUser:
$getusergroups = Get-ADUser -Identity jsanti -Properties memberof | Select-Object -ExpandProperty memberofЧтобы добавить нового пользователя в те же группы, достаточно отправить список групп командлету Add-ADGroupMember по каналу:
$getusergroups | Add-ADGroupMember -Members a.adams -verboseЧтобы добавить пользователя в группы безопасности домена, выполните команды под учетной записью администратора домена или учетной записью пользователя, которому делегированы права на добавление пользователей в группы AD.
Затем убедитесь, что новый пользователь был успешно добавлен в те же группы, что и исходный пользователь:
Get-ADUser -Identity a.adams -Properties memberof | Select-Object -ExpandProperty memberofВы можете использовать универсальный командлет Get-ADPrincipalGroupMembership , чтобы скопировать членство в группе любого объекта AD (пользователя, компьютера или группы).
$userSource= “jsanti"
$userTarget=”a.adams”
$sourceGroups = Get-ADPrincipalGroupMembership -Identity $userSource
Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $sourceGroupsВы можете использовать скрипт PowerShell, который автоматически записывает текстовый файл журнала, содержащий информацию о добавлении пользователя в группы:
$logfile="c:\LOG\CopyAdGroup.log"
$userSource= “jsanti"
$userTarget=”a.adams”
$Time = Get-Date
Add-content $logfile -value $Time -Encoding UTF8
Add-content $logfile -value "_______________"
Add-content $logfile -value "Copying AD groups from $userSource to $userTarget" -Encoding UTF8
$sourceGroups = (Get-ADPrincipalGroupMembership -Identity $userSource).SamAccountName
foreach ($group in $sourceGroups)
{
Add-content $logfile -value "Adding $userTarget to $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 можно в журналах безопасности контроллера домена.
Еще одна популярная задача — копирование всех пользователей из одной доменной группы в другую. Для этого вы можете использовать эту команду PowerShell:
Get-ADGroupMember "LA-GPO-Admins" | ForEach-Object {Add-ADGroupMember "LA-Server-Admins" -Members $_ }Вы можете использовать другие способы автоматического добавления пользователя в группы AD в зависимости от его положения или другого атрибута пользователя, указанного в AD. В следующей статье представлен пример создания динамических групп Active Directory.


