Сегодня покажу вам, как можно очень быстро добавить кучу пользователей в группы 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 админов добавляют пользователей? Правильно – при помощи оснастки пользователи и компьютеры.
ОК, если так нужно добавить одного-двух в пару групп, в принципе можно и так, но вот если пользователей больше – то это уже крайне неэффективно.
Тут может помочь команда из модуля 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 в серверных виндах, и лучше заранее к этому подготовиться.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.
Если вам помогла статья, вы можете >>отблагодарить автора<<