Найти в Дзене

Cкрипт копирования групп Active Directory (AD) с одного пользователя на другого.

$userSource= "user1" - у кого берем группы
$userTarget="user2" - кому копируем группы

Этот скрипт предназначен для копирования групп Active Directory (AD) с одного пользователя на другого.

Он работает следующим образом:

  1. Определяется путь к файлу журнала ($logfile), в который будут записываться все действия.
  2. Задаются имена исходного ($userSource) и целевого ($userTarget) пользователей.
  3. Получается текущее время ($Time) и записывается в журнал.
  4. Записывается разделитель в журнал.
  5. Записывается сообщение о начале копирования групп AD с исходного пользователя на целевого.
  6. Получаются группы, в которых состоит исходный пользователь ($sourceGroups).
  7. Для каждой группы из списка групп исходного пользователя:
    Записывается сообщение о добавлении целевого пользователя в группу.
    Пытается добавить целевого пользователя в эту группу. Если это удается, результат записывается в журнал. Если возникает ошибка, сообщение об ошибке записывается в журнал и происходит переход к следующей итерации цикла.
  8. Записывается разделитель в журнал.

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

$logfile="c:\ps\CopyAdGroup.log"
$userSource= “user1"
$userTarget=”
user2
$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 "_______________"