CSVDE не заменит Addusers
В рейтинге нелюбимых заданий для администраторов уверенно лидирует следующее: «Быстро создать много учетных записей пользователей». Нередко приходится слышать жалобы типа: «Шеф опять требует к контрольному сроку завести кучу пользователей в домене Windows 2003! Наверное, снова сломается мышь от щелканья в Active Directory Users and Computers. Да есть ли приемлемый способ решить эту нудную задачу?!» К счастью, эта проблема действительно имеет простое решение.
Строго говоря, приемлемых способов существует множество. Например, и в Windows 2003, и в Windows XP имеется утилита Dsadd Users, предназначенная для создания учетных записей пользователей из командной строки. Небольшое упражнение на копирование и вставку — и пакетный файл для любого количества пользователей готов в считанные минуты. В Windows 2000 Server и более поздних версиях имеется createusers.vbs — сценарий на VBScript для создания учетных записей пользователей, единичных или по указанному списку. По крайней мере, со времен Windows NT 4.0, а может, даже раньше, можно было применить команду Net Users имя_пользователя /Add для добавления одного пользователя, теперь снова нужно добавить немного Notepad — и вот вам пакетный файл для добавления группы пользователей.
Лично я предпочитал использовать утилиту Addusers (addusers.exe) из набора инструментов Microsoft Windows NT Server 4.0 Resource Kit . Эта утилита позволяет экспортировать базы данных SAM и AD в текстовые файлы в формате CSV (comma separated values, данные, разделенные запятыми) и импортировать такие файлы для массового создания пользовательских учетных записей. К сожалению, впоследствии Microsoft исключила из поставки Addusers, предоставив взамен две другие утилиты — Comma Separated Value Data Exchange (CSVDE) и Lightweight Data Interchange Format, Data Exchange (LDIFDE). Они, конечно, имеют свои достоинства и недостатки. В данной статье мы остановимся подробнее на использовании утилиты CSVDE.
Как работает CSVDE
Подобно Addusers, CSVDE позволяет экспортировать содержимое базы AD домена в текстовый файл CSV, который может использоваться в дальнейшем для пакетного создания учетных записей пользователей в целевом домене создания путем импортирования. Недостаток Addusers заключается в том, что данная утилита воспринимает только те атрибуты учетных записей, которые использовались в Windows NT 4.0. Пришедшая ей на смену утилита CSVDE позволяет переносить почти полный набор свойственных AD характеристик пользовательских учетных записей. Например, в отличие от Addusers, утилита CSVDE позволяет переносить такие атрибуты пользователя, как имя руководителя (principal name), адрес электронной почты и многие другие.
Следующая элементарная команда используется для полного экспорта содержимого базы данных AD:
csvde -f export.csv
При вызове этой команды будет создан файл с именем export.csv, содержащий объекты из базы данных текущего домена AD. Эти данные могут понадобиться в нашем примере как образец формата файла CSV для дальнейшего импорта с помощью CSVDE, а также для отладки на случай возникновения проблем. Достаточно часто возникают проблемы с созданными вручную файлами, когда CSVDE отказывается воспринимать предлагаемый файл и сообщает об ошибках формата. Файлы CSV можно просматривать и редактировать в Notepad, но гораздо больше для этой цели подходит Microsoft Excel, позволяющий просматривать данные в виде таблицы и предоставляющий богатые возможности редактирования.
Для более удобного просмотра файла в Excel нужно выделить весь лист (Ctrl+A) и выбрать в меню «Формат», «Столбец», «Автоподбор ширины» (Format, Column, Autofit) для отображения скрытой информации и сокращения пустых столбцов. Полученный таким образом файл CSV обычно имеет очень большой размер. В результате ввода этой команды CSVDE выдаст полную информацию обо всех объектах AD — учетных записях компьютеров, объектах групповых политик (GPO), организационных единицах (OU) и многом другом. Поскольку нас интересуют только учетные записи пользователей, следует ограничить экспортируемую информацию только данными о пользователях. Для этого требуется ограничить класс выдаваемых объектов с помощью ключа -r (restrict):
csvde -f export.csv -r «(objectClass=User)»
Полученный файл тоже будет содержать множество столбцов, большинство из которых в процессе создания файла CSV для импорта не пригодятся. Скорее всего, понадобятся следующие столбцы: DN (distinguished name, отличительное имя пользователя), objectClass (принимает значение user), name (полное имя пользователя), cn (то же, что и полное имя), displayName (то же, что и полное имя), givenName, sn (фамилия), profilePath, mail, sAMAccountName (имя пользователя, как было принято до Windows 2000) и userPrincipalName (имя руководителя данного пользователя. Если в организации принято заполнять дополнительные информационные поля (Manager, Office и т. п.) в оснастке Active Directory Users and Computers, то, возможно, понадобится использовать и эти дополнительные поля, помимо перечисленных выше.
Ограничения CSVDE
Складывается впечатление, что теперь файл CSV можно загрузить с помощью CSVDE обратно в AD и получить новые учетные записи, как это происходило в случае использования утилиты Addusers. К сожалению, сделать это не удастся по нескольким причинам. В частности, CSVDE экспортирует такие уникальные идентификаторы SID (objectSID), которые невозможно импортировать. При попытке импортировать файл, содержащий поля objectSID, система выдаст сообщение: Add error on line 2: Unwilling To Perform (ошибка добавления в строке 2: выполнение невозможно). Со стороны сервера будет получено сообщение об ошибке: Access to the attribute is not permitted because the attribute is owned by the Security Accounts Manager (SAM) (доступ к атрибуту запрещен, так как владельцем атрибута является Security Accounts Manager, SAM).
Не стоит и пытаться разгадать точный смысл этого сообщения об ошибке. Достаточно понять, что некоторые вещи CSVDE просто не может делать. Если ограничить поля в импортируемом файле CSV только теми, которые были перечислены ранее, то импорт будет выполнен нормально, без каких-либо сообщений об ошибках. Нужно иметь в виду, что если файл CSV создается вручную без использования шаблонов, столбцы должны называться именно так, как указано выше, поскольку утилита CSVDE чувствительна к регистру символов. Впрочем, можно дать CSVDE инструкцию игнорировать те поля, которые мешают выполнению, для этого достаточно при запуске указать ключ -m:
csvde -f export.csv -m -r «(objectClass=User)»
Сформировав пригодный для импорта файл, можно импортировать его в AD командой
csvde -f filetoimport.csv -i
где ключ -i указывает на операцию импорта.
CSVDE имеет и ряд других ограничений. Во-первых, CSVDE не устанавливает пароли для созданных учетных записей пользователей. Поэтому после создания набора учетных записей для них необходимо установить пароли каким-то другим способом (в следующей статье будет рассказано, как это сделать с помощью сценария VBScript). Во-вторых, все созданные таким образом учетные записи не имеют пароля и заблокированы, поскольку доменные политики Windows 2003 по умолчанию требуют сложных паролей. И самое главное, CSVDE не позволяет включать пользователей в группы безопасности. Можно создать множество пользователей, но если попытаться задействовать атрибут Member Of для включения пользователей в какие-нибудь группы, ответом будет сообщение об ошибке SAM.
В целом я не могу назвать CSVDE полноценной заменой утилите Addusers. Некоторые из его недостатков CSVDE можно обойти с помощью сценариев, но об этом мы поговорим в следующем выпуске.
Редактоp Windows NT Magazine MCSE и автор книги «Mastering Windows NT Server 4.0» (издательство Sybex). С ним можно связаться по адресу: mark@minasi.com