Автогенерация powershell-скриптов

в 9:07, , рубрики: active directory, powershell, администрирование windows, Блог компании d-lera, системное администрирование, скрипты, стартап

Автогенерация powershell скриптовВсе рано или поздно приходят к желанию переложить занудную и однообразную работу на «плечи» компьютера. Например, ко мне это чувство пришло, когда я начал внедрять Active Directory в организации на 100+ сотрудников. Добавлять и заполнять все поля для большого числа пользователей вручную — ужасно нудное и долгое занятие. Конечно, первым делом я обратился к powershell, но процесс написание скрипта как-то уж слишком затянулся и в конечном счете ничего путного не вышло. Мечты иметь красивый и аккуратный каталог пользователей так и остались мечтами. Пока я не загорелся идеей автоматизации создания powershell-скриптов.

Миллионы администраторов по всему миру, так же, как и я, ловят одни и те же баги в тысячах одинаковых скриптов для одних и тех же стандартных задач. Просто удивительно, что до меня ни один из них не решился закрыть этот вопрос раз и навсегда, создав автогенератор poweshell-скриптов. Если мы можем разворачивать десяток серверов в день, то научить компьютер писать скрипт без ошибок — точно не проблема.

Ближе к делу

Короче говоря, я собрал такой автогенератор скрипта и он готов к бета-тестированию. Называется он d-lera (d-lera.com) и главная его функция — устранение стадии написания кода скрипта, самого долгого и утомительного процесса при использовании powershell. Вместо этого администратор заполняет достаточно простую форму — по этим данным готовый powershell-сценарий генерируется и сохраняется автоматически.

Проект еще только-только вылупился, и сейчас умеет генерировать простой и удобный скрипт для создания пользователей в Active Directory. Признаюсь, от читателей в комментариях хочется услышать, что сейчас работает неккоректно и какие функции нужны «на полях» в первую очередь. Поехали?

RTFM.txt

На простом примере, покажу как все работает. Предположим, у нас есть организация с незамысловатым названием «Котейкины дрова». В ней есть два отдела «Мохнатая пилорама» и «Усатая бухгалтерия», В первом отделе один номер телефона, а второй пусть распологается сразу в двух кабинетах, в каждом из которых свой телефон.

Получается такая структура:

Автогенерация powershell скриптов

Стоит обратить внимание. что данная структура не обязательно должна повторять структуру подразделений в Active Directory.

Открываем страницу http://d-lera.com/adusercreate, нажимаем «Создать организацию», вводим название. Создается корневое подразделение, в котором автоматически заполняется атрибут «Организация»:

Автогенерация powershell скриптов
В поле «Адрес в каталоге» вводим адрес корневого подразделения (Organisation Unit) в каталоге Active Directory, где мы храним пользователей. Адрес домена добавлять не надо. Настраиваем атрибуты, которые одинаковые для всей организации: адрес, адрес сайта, параметры учетной записи.
Автогенерация powershell скриптов
Автогенерация powershell скриптов
После чего добавляем два отдела «Мохнатая пилорама» и «Усатая бухгалтерия». При создании подразделений копируются все настройки родителя, но некоторые атрибуты обновляются автоматически:
Автогенерация powershell скриптов
Заполним так же руководителей отделов (вводить надо логин учетной записи руководителя отдела без префикса домена) и теневые группы, а для «Мохнатой пилорамы» заполняем еще телефон и кабинет:

Теневые группы

Иногда же необходимо, что бы учетные записи сотрудников всего отдела являлись членами какой-либо группы безопасности. При заполненном параметре «Теневая группа» после создания учетной записи сгенерированный сценарий будет автоматически добавлять её в указанную группу

Автогенерация powershell скриптов
Автогенерация powershell скриптов
А теперь воспользуемся тем, что при создании скрипта структура подразделений не обязательно должна оответствовать структуре подразделений в каталоге Active Directory. В «усатой бухгалтерии» создаем два дочерних подразделения: «Усатая бухгалтерия: сметанная комната» и «Усатая бухгалтерия: комната с клубками ниток» и каждому из них заполняем свой телефон и кабинет:
Автогенерация powershell скриптов
Не забываем, что при создании дочерних подразделений некоторые поля заполняются автоматически. Вручную удаляем добавленные уровни адреса, а для названия отдела выбираем «обновить все дочерние подразделения» в «Усатой бухгалтреии»:
Автогенерация powershell скриптов
И тут мы вдруг вспоминаем, что при создании учетной записи хотим вводить e-mail, а еще конечно же пароль. Поэтому в «Котейкины дрова» отмечаем чекбокс для ручного ввода должности и пароля и обновляем все дочерние подразделения (обновляются только непосредственные наследники, поэтому для «Усатой бухгалтерии» надо так же жать на кнопку обновления):
Автогенерация powershell скриптов
Автогенерация powershell скриптов
И на последок: в «Котейкины дрова» и «Усатой бухгалтерии» снимем галочку «Резрешить создание пользователей в данном подразделении», что бы скрипт не предлагал там создавать пользователей:
Автогенерация powershell скриптов
Никому не хочется раскрывать сразу все сведения о домене организации на первом попавшемся сайте в интернете, поэтому после сохранения скрипта его необходимо открыть любым текстовым редактором и поправить первые две строчки, введя название вашего домена Active Directory. Сохраняем, запускаем:
Автогенерация powershell скриптов
Автогенерация powershell скриптов
Автогенерация powershell скриптов

Планы на ближайшее будущее

  • Возможность сохранения конфигурации
  • Подписывание скриптов. Сейчас они генерируются неподписанными. Как самостоятельно подписать можно прочитать, например, здесь
  • Конструкторы атрибутов: что бы, например, логин автоматически составлялся по шаблону на основе имени и фамилии и переводился с русского в транслит
  • Комбинированный ввод многозначных атрибутов: введенное значение + предустановленное значение (например ввод индивидуального внутреннего номера телефона + общий городской номер)
  • Сценарии для обновления существующих пользователей, создания пользователей из файла Excel или .CSV
  • Добавление кастомных атрибутов пользователя Active Directory
  • Поддержка Exchange, SharePoint
  • Изучение и добавление сценариев для различных других стандартных задач

P.S. Приглашаю всех потестить и буду очень благодарен за любые пожелания / предложения / замечания. Писать можно на admin@d-lera.com, в личку, в комментариях и вообще где угодно — мы же в интернете все-таки

Т.к. сведения о каталоге Active Directory организации являются информацией достаточно интимного характера, то очень важно Ваше мнение:

Автор: d-lera

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js