null

Добавление новых пользователей в Active Directory из csv файла

Сразу стоит сказать, что, скорее всего, всё описанное ниже можно было сделать исключительно средствами Powershell, но мы с коллегой решили, что настоящие мужчины должны использовать Perl, а его отсутствие на сервере является плохой приметой и вызывает деградацию RAID массива. 

Исходные данные: имеем csv файл, в первом поле которого содержится LoginName. Требуется добавить всех перечисленных в этом файле пользователей в AD методом двойного клика мышкой.

Очевидно, нам потребуется некая обёртка, которая свяжет запуск Perl и Powershell с нужными параметрами. Было решено обёртку также написать на Powershell. 

Этап первый: генерирование Powershell скрипта.

В этом этапе мы решили расчехлить Perl (в нашем случае Starwberry Perl версии 5.24.1) и написать небольшой скрипт, который будет брать .csv файл и, используя данные из него, генерировать Powershell скрипт добавления пользователей со всеми нужными параметрами.

Сохраняем этот файл в удобной директории и называем LoadData.pl. На выходе мы получим файл CreateUsers.ps1.

#!/usr/bin/perl

use strict;
use warnings;

my $CMD = '';

# Читаем .csv файл

my @files = <*csv>;
die "Too many input files" if @files > 1;

open my $fh, "<", $files[0] or die 'Unable to open '. $files[0] . ": $!";

# По этому пути появится наш генерируемый Powershell скрипт

open my $script, ">", "C:\\Users\\admin\\Desktop\\ImportUsers\\CreateUsers.ps1" or die $!;
$\="\n";

# Устанавливаем для всех пользователей одинаковый пароль

print $script '$password = "Start123" | ConvertTo-SecureString -AsPlainText -Force';

# И генерируем нужное количество строк Powershell кода

while (<$fh>) {
   next if $. == 1;
   my ($user) = ($_ =~ /,([^,]+?),/);
   $user = substr $user,0,20;
# Не стоит забывать указать нужные параметры для созданного пользователя
   print $script "New-ADUser -Name \"$user\" -Path \"OU=Users,DC=something,DC=local\"".
   " -AccountPassword \$Password -ChangePasswordAtLogon \$true -PasswordNeverExpires \$true -Enabled \$True";
# И добавить его в нужную группу   
   print $script "Add-ADGroupMember \"Lab1_users\" \"$user\"";
}

 

Этап второй:определяем параметры запуска сгенерированного скрипта и создаём обёртку

Главное что нужно помнить: скрипт требуется запускать от имени администратора домена. Поэтому, запуская его из придуманной нами обёртки нужно указать правильные параметры запуска.

На выходе получаем файл Run.ps1, на который можно ткнуть двойным нажатием мыши и произойдёт магия. Содержимое файла:

C:\Users\admin\Desktop\ImportUsers\LoadData.pl

$arg = "-file C:\Users\admin\Desktop\ImportUsers\CreateUsers.ps1"
start-process powershell.exe -verb runas –argumentlist $arg

Пользоваться легко: кладём нужный нам .csv файл в директорию с созданными скриптами и запускаем Run.ps1.