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

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

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

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

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

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

#Import required modules
Import-Module ActiveDirectory

#Loop through each row and gather information

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

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

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

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

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

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

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

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

:/>  Клиент групповой политики препятствует входу в систему недостаточно системных ресурсов

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

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

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

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

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

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

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

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

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

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