[Из песочницы] Унификация logon скриптов в рамках большой компании
В 2006 году компания, где я работал, переходила с разрозненных доменов Windows NT 4 и Windows 2000 на единый и централизованный AD домен на основе Windows 2003. Компания наша очень большая, мульти-национальная, сотрудников сильно больше за 30 000 человек. Прежде, чем начну говорить про созданные скрипты, опишу немного архитектуру AD и нашу IT инфраструктуру.Архитектура ADПри внедрении AD централизованные подразделения (они находятся в Болгарии), которые за это отвечали, приняли следующие решения: Единственный домен; Структура OU по странам (на примере России): Russia\Workstations, Russia\Users, Russia\Groups; В каждой стране, в конечном итоге, осталось по 2 DC (Domain Controller); Прав уровня Domain admin в странах нет, они — только в Болгарии (BG). Описание ИС, располагающейся в России 15 крупных ЛВС по стране с числом ПК от 100 до 500, которые располагают своим файловым сервером; Более 100 филиалов с числом ПК от 3 до 30; Общее число рабочих станций более 5000; Все сайты объединены в единую сеть с разными скоростями; Рабочие станции — Windows XP Prof (на тот момент), либо Windows 7 (сейчас). Права в AD у локальных IT отделов OU Russia Включать свои ПК в домен; Менять членов групп, созданных в OU Russia\Groups; Сбрасывать пароли пользователей в OU Russia\Users; Всё остальное — по стандартным запросам к централизованным сервисам по обслуживанию AD (если одобрят). Задача Передо мной стояла задача разработать централизованные унифицированные startup / logon скрипты, которые бы делали всё, что обычно возлагается на такие скрипты, а кроме того — собирали бы информацию о событиях, происходящих с парком техники. При этом решение оптимизировано для условий наличия у вас минимальных прав в домене AD, то есть вам не придётся часто беспокоить доменных админов для того, чтобы обслужить скриптовую инфраструктуру.Почему это может быть интересным для вас Если вы хотите стандартизировать и унифицировать startup / logon скрипты, а также иметь мощнейший инструмент, позволяющий собирать информацию о ваших компьютерах, автоматизировать административные задачи и т.п., и при этом всё это совершенно бесплатно, то вы можете воспользоваться моим решением, которое работает в CCHBC с 2006 по 2014 года и хорошо себя зарекомендовало. Безусловно, освоение данного решения потребует от вас времени и усилий. Посредством этой статьи я бы хотел понять, насколько это решение будет интересно широкому кругу IT специалистов. Если вы проявите интерес, я буду продолжать документировать скрипты и развивать их.Возможности Не смотря на то, что скрипты реализованы на VBScript, для рядовых администраторов, которые хотят воспользоваться их плодами, разработан макроязык, состоящий из 20 команд, которые покрывают 90% типовых потребностей по управлению рабочими станциями через logon-скрипты; Каждая IP подсеть может иметь свой сценарий для выполнения, кроме этого есть глобальный сценарий, который выполняют все рабочие станции; Скрипты бывают startup и logon. Естественно, startup скрипты выполняются от имени системной учётной записи рабочей станции, а logon — от имени пользователя; Упоминаемые выше 20 макрокоманд могут отрабатывать в зависимости от следующих условий: Членства в группе AD; Конкретное имя хоста; Конкретное имя пользователя; Принадлежность к OU; Логическое условие на основе наличия файла или папки на диске, значения ключа реестра, версии исполняемого файла, либо любого условия на языке VBS, которое может быть вычислено при помощи функции VBS Eval. UAS стартует свой загрузчик через GPO с DC, а далее загрузчик определяет ближайший файловый сервер и основной скрипт считывается и запускается уже оттуда; Макрокоманды UAS: MAPDRIVE — подключение сетевого диска; DECSYMB — устанавливает символ-разделитель целой и дробной части чисел в региональных настройках; USERLOGON — запуск внешнего скрипта / программы в контексте пользователя; PCLOGON — запуск внешнего скрипта / программы в контексте системы; ADDPRINTER — подключает сетевой принтер; DELPRINTER — удаляет подключение принтера; SETDEFPRN — устанавливает принтер по умолчанию; UCRTSHORTCUT — создание ярлыка на рабочем столе пользователя; PCRTSHORTCUT — создание ярлыка на общем рабочем столе; COPYFILE — копирует файл, предварительно запакованный утилитой compress; после копирования автоматически запускает распаковку файла через expand; MAKEDIR — создание папки; DELTMPFILES — удаляет файлы из папки TEMP; SETFLAG — устанавливает флаг (триггер), по которому могут стартовать другие команды (см. 4.е.); CRTSHARE — создаёт общий ресурс на клиентском компьютере; DELSHARE — удаляет общий ресурс; SETVAR — объявление и вычисление переменной через оператор Execute VBS. Чрезвычайно мощная команда, которая позволяет вам выполнить один или несколько операторов VBS опираясь на огромное количество переменных, которое уже объявлено и вычислено в скрипте. Например, вы при помощи этой команды можете записать что-то в реестр, хотя специальной команды для этого и нет. Переменные полученные через эту команду можно подставлять в другие команды и интерпретатор будет подставлять вместо них их значения; SQLADD — добавление записи в SQL таблицу со структурой Serial, Type, Value; SQLUPDATE — обновление созданной в SQL таблице записи; SMTPMSG — отправка сообщения по протоколу SMTP (без авторизации). Скрипт собирает логи и размещает их на файловом сервере: GLOBAL — лог основных контролируемых характеристик ПК; EVENTS — лог изменений основных характеристик, которые идентифицируются путём сравнения текущей и предыдущей версий global лога; PCSESLOG — лог фактов исполнения рабочей станцией startup скрипта; USSESLOG — лог фактов исполнения logon скрипта пользователями; USERLOG — лог, собирающий статистику по частоте входов пользователей на ПК, чтобы можно было с определенной долей достоверности вычислить основного пользователя данного компьютера. На основе GLOBAL логов при помощи вспомогательных скриптов ежедневно формируется Excel файл, содержащий самую свежую информацию по всем компьютерам компании. Этот файл — ценнейшее подспорье в работе любой службы поддержки, а также в выверке инвентаризации; Логи EVENTS, PCSESLOG и USSESLOG вспомогательными скриптами на ежедневной основе консолидируются на определенном файловом сервере и закачиваются в SQL БД. Данная БД, накопившая информацию за несколько лет, очень выручает при поиске ответов на вопросы типа: «кто у нас был пользователем RU651256 в 2011 году» или «где последний раз логинился ноутбук с серийным номером S4FTYY6» и т.п.; Скрипт ведет подробное логирование своей работы, создавая в папке TEMP соответствующие текстовые файлы; Чтобы не зависеть от фактической частоты перезагрузок компьютера (некоторые пользователи не перезагружаются неделями), предусмотрен механизм автоматического запуска скрипта по расписанию со случайной задержкой (по умолчанию с 12 до 13:00); По IP адресу скрипты точно определяют принадлежность компьютера к сайту. Предусмотрена структура: депо → завод → регион → страна; Скрипт отпределяет тип канала (LAN или WAN) от рабочей станции до файлового сервера, измеряя задержку во время пинга; Реализована процедура, которая по WMI кодам модели компьютера присваивает компьютеру модель, имеющую более осмысленную структуру. Например, не модель »2320AR1», а «Lenovo ThinkPad X230». Всё это легко адаптируется под ваш парк; Скрипты собирают серийные номера компьютера, материнской платы, монитора, жёсткого диска, батареи у ноутбука. Очень помогают отследить неавторизованные переконфигурирования компьютеров, когда у нового компьютера вдруг вместо 4 Гб памяти становится 2 Гб, или авторизованные, когда идёт замена жёсткого диска по гарантии или материнской платы; Logon скрипты могут работать в Citrix сессиях. Если данная тема будет интересна, то я найду время оформить как следует инструкции и дистрибутив. Вопросы можно задавать по личной почте.