Вы здесь

Как быстро добавить пользователей в группы AD [скрипт]


Как быстро добавить пользователей в группы AD [скрипт]

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

Сразу покажу скрипт, чтобы не томить.

$ErrorActionPreference='Continue'
$error.Clear()
$i=0
import-module activedirectory
$pathToCSV='.\users.csv'
$csv=Import-Csv -path $pathToCSV -Delimiter ';'
foreach ($group in $csv)
{
    $uname="$($group.Username)".split('\')[1]
    $groupname="$($group.Groupname)"
    Add-ADGroupMember -Identity $groupname -Members $uname    
    $i++
}
if ($error.Count -gt 0)
{
    echo "Errors count: " $error.Count
}
$success=$($i-$error.Count)
if ($success -gt -1)
{
echo "Success records count: " $success
}

Как, наверное, процентов 80 админов добавляют пользователей? Правильно – при помощи оснастки пользователи и компьютеры.

Пользоаптнли и компьютеры Active Directory

ОК, если так нужно добавить одного-двух в пару групп, в принципе можно и так, но вот если пользователей больше – то это уже крайне неэффективно.

Тут может помочь команда из модуля activedirectory для powershell:

Add-ADGroupMember -Identity ИмяГруппы -Members ИмяПользователя

Пример:

Add-ADGroupMember -Identity test1 -Members sanglyb

Вот, так уже на много быстрее и эффективнее, но всё равно… А если будет несколько десятков пользователей и столько же групп, куда нужно всех раскидать? То же замучаешься набирать эту команду. Кроме того, когда набираешь кучу однотипных команд крайне велика вероятность, где то ошибиться. И тут нам на помощь приходит скрипт.

Все версии PowerShell умеют парсить CSV файлы, по крайней мере начиная с версии 2, чем мы и воспользуемся, создадим файл users.csv с примерно таким содержанием:

 

Username;Groupname

sanglyb;test1

sanglyb;test2

sanglyb;test3

соответственно первый столбец – имя пользователя, второй – группа куда этого пользователя нужно добавить.

Кидаем файл в папку со скриптом, выполняем скрипт с компьютера, который находится в домене, от имени пользователя, который имеет право добавлять пользователей в нужные группы. Готово.

Пример выполнения скрипта

Тем самым можно сэкономить кучу времени и главное избежать ошибок при добавлении.

Немного разберем скрипт.

$ErrorActionPreference='Continue'

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

$error.Clear()

Далее отчищаем прошлые ошибки.

import-module activedirectory

Импортируем модуль activedirectory, что бы PowerShell узнал о заветной команде.

$pathToCSV='.\users.csv'
$csv=Import-Csv -path $pathToCSV -Delimiter ';'

Указываем путь до CSV файла и импортируем его.

foreach ($group in $csv)
{
    $uname="$($group.Username)".split('\')[1]
    $groupname="$($group.Groupname)"
    Add-ADGroupMember -Identity $groupname -Members $uname    
    $i++
}

Проходимся по каждой строке в файле: заносим в переменные имя пользователя и группу, куда его нужно добавить. Добавляем пользователя в группу.

Исключительно в целях эстетики

if ($error.Count -gt 0)
{
    echo "Errors count: " $error.Count
}

Смотрим на количество ошибок, и выводим это количество.

$success=$($i-$error.Count)
if ($success -gt -1)
{
echo "Success records count: " $success
}

Смотрим на количество успешных выполнений и выводим это количество.

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

И на последок, хочу сказать – учите PowerShell, даже если вы работаете в очень маленькой организации и у вас нет необходимости что-то автоматизировать.

Дело в том, что Microsoft уже начала активные и очень агрессивные действия по избавлению от GUI в серверных ОС. Например, Windows Server 2016 1709, которая сейчас доступна только корпоративным клиентам по VL каналам, уже лишена возможности установки ОС с Desktop Experience, и включить эту фичу после установки нельзя (речь конечно о чистой, новой установке). Только Core, только хардкор. Так что, так или иначе, рано или поздно придется отказаться от использования GUI в серверных виндах, и лучше заранее к этому подготовиться.

2 0

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.


Если вам помогла статья, вы можете >>отблагодарить автора<<