Заметки о Windows и других программных продуктах Microsoft...

Автоматизация создания учетных записей пользователей с заданным паролем

Автоматизация создания учетных записей пользователей с заданным паролем

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

Итак, есть список пользователей в Excel (ФИО, отдел, должность и т.п.). Этот список необходимо доработать, сгенерировать для каждого пользователя уникальный пароль, завести пользователей из списка в AD и передать список с паролями дальше.

В итоге получаем вот такой CSV-файл.

список пользователей в csv

 

В данной ситуации описанный в предыдущей статье метод экспорта из CSV не сработает, поскольку пароль не является атрибутом пользователя и, соответственно, применен не будет. Придется использовать немного другой способ:

#Import required modules
Import-Module ActiveDirectory

#Prompt user for CSV file path
$filepath = "C:\Scripts\employees.csv";

#Import the file into a variable
$users = Import-Csv $filepath -Delimiter ";"

#Loop through each row and gather information

ForEach ($user in $users) {

$displayname = $user.DisplayName;
$name = $user.name;
$SurName = $user.Surname;
$GivenName = $user.GivenName;
$OUpath = "OU=Employees,DC=Test,DC=local";
$pass = $user.AccountPassword;
$securePassword = ConvertTo-SecureString $pass -AsPlainText -Force;
$SAM = $user.SAMAccountname;
$UPN = $user.UserprincipalName +"@test.local";
$Title = $user.Title;
$Department = $user.Department;

#Create user account

New-ADUser -Name $name -DisplayName $displayname -UserPrincipalName $UPN -SamAccountName $SAM -Surname $Surname -GivenName $GivenName `
-Title $Title -Department $Department -Path $OUpath -AccountPassword $securePassword -Enabled $true -Description $description;

}

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

результат работы скрипта

 

А теперь о том, что может пойти не так 🙂

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

сбитая кодировка

 

Дабы избежать этого, надо экспортировать файл в формате UTF-8. Для этого при сохранении файла выбрать тип CSV UTF-8 (разделитель-запятая).

сохранение в правильном формате

 

Вторая ошибка может случиться из за неверно указанного разделителя (Delimeter). Хотя при выгрузке в формате CSV в качестве разделителя должна использоваться запятая, но на практике это не всегда так. В итоге запустив импорт из CSV вместо структурированной информации мы получим кашу.

ошибка в разделителе

 

Дело в том, что по умолчанию Excel использует региональные настройки операционной системы. Вот у меня, к примеру, в качестве разделителя в настройках указаны точка с запятой. И даже если при сохранении в выбранном формате файла в качестве разделителя явно указана запятая, Excel упорно подставляет точку с запятой.

региональные настройки системы

 

Исправить это можно, зайдя в меню Файл-Параметры-Дополнительно и в поле Системные разделители снять галку Использовать системные разделители. После этого можно вручную указать нужные разделители.

Так если нужно, чтобы в качестве разделителя была запятая, то указываем разделителем целой и дробной части запятую, а разделителем разрядов точку. Ели же нужно точку с запятой — то наоборот.

настройка разделителя в Excel

 

В принципе можем не заморачиваться с разделителем, поскольку его можно явно указать в команде импорта. Для примера немного изменим предыдущую команду, укажем в качестве разделителя точку с запятой:

Import-Csv C:\scripts\employees.csv -Delimiter ";"

указание разделителя в команде

 

Вот как то так.

 
 
Комментарии

Пока нет комментариев.

Ответить