О том, как массово заводить пользователей, я уже рассказывал в одной из предыдущих статей. С тех пор ничего особо не поменялось и описанные в ней способы по прежнему актуальны. Но все они предполагают либо заведение неактивных учеток, либо одинаковый пароль и, соответственно, необходимость его смены при первом входе. А иногда бывает необходимость завести учетные записи с уже готовым паролем.
Итак, есть список пользователей в Excel (ФИО, отдел, должность и т.п.). Этот список необходимо доработать, сгенерировать для каждого пользователя уникальный пароль, завести пользователей из списка в AD и передать список с паролями дальше.
В итоге получаем вот такой 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 упорно подставляет точку с запятой.

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

В принципе можем не заморачиваться с разделителем, поскольку его можно явно указать в команде импорта. Для примера немного изменим предыдущую команду, укажем в качестве разделителя точку с запятой:
Import-Csv C:\scripts\employees.csv -Delimiter ";"

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




