Пример из реальной жизни

Пока Microsoft занята продвижением Windows PowerShell, следующего поколения языка написания сценариев для Windows, системные и сетевые администраторы и ИT-менеджеры в большей степени сосредоточены на выполнении текущих задач при помощи того инструментария, который под рукой, — они пишут сценарии для Windows с использованием BAT-файлов или на VBScript. Специалист по ИT Тори Скаерс, сетевой администратор компании Prudential Fox & Roach, является автором множества сценариев для автоматизации самых разных аспектов администрирования Windows, таких как развертывание, резервирование и восстановление на компьютерах конечных пользователей. Хотя Скаерс называет свои сценарии «неуклюжими», они, тем не менее выполняют колоссальный объем работы и делают жизнь Скаерса проще. В беседе с Энн Грабб Скаерс рассказал о своем увлечении — написании сценариев — и о некоторых сценариях, которые он создал для облегчения обслуживания более 1500 систем, находящихся в его ведении.

Вы — ИТ-специалист «широкого профиля». Что возбудило ваш интерес к сценариям?

Я начинал писать сценарии еще на Commodore 64, когда мне было примерно 10 лет, даже не зная еще, что занимаюсь именно созданием сценариев. Потом настала очередь OS/2 и REXX, а теперь я пишу в основном на VBScript и немного на bash shell [Linux]. Но что действительно послужило толчком, так это появление компакт-диска Windows IT Pro Scripting. Буквально в каждом из наших сценариев есть что-то из ваших публикаций, что-то приносят нам читатели Windows IT Pro. Большинство из того, что я пишу, достаточно прямолинейно и соответствует принципу «работает — и хорошо». Огромная доля сценариев заимствуется из сетевого сообщества — Windows IT Pro, Google. Я просто подстраиваю найденное под собственные нужды.

Расскажите о каких-нибудь сценариях, которые вы пишете для автоматизации ИТ-задач.

Предмет моей особой гордости — сценарий, который создавался на протяжении достаточно долгого времени; он запускается на финальной стадии подготовки станции клиента. Мы не используем для развертывания предлагаемую Microsoft инфраструктуру на базе образов, поэтому я написал сценарий, который импортирует в реестр записи для изменения характера работы некоторых приложений, установки приложений, размещения значков на рабочем столе, после чего вызывается программа установки антивирусного программного обеспечения, программ инвентаризации и, наконец, компьютер вводится в домен. Мы использовали этот сценарий около года, прежде чем стали задействовать специализированные системы для развертывания образов систем.

Еще один сценарий, которым я пользуюсь постоянно, написан для определения состояния компьютера — «жив — не жив». При помощи CSVDE я вручную экспортирую файл CSV, содержащий имена компьютеров домена в Active Directory (AD) и копирую их в текстовый файл. Я хотел бы использовать для экспорта из AD утилиту DSFind или разработку AdFind (joeware.net), но еще не придумал, как лучше это сделать. Затем сценарий опрашивает каждый компьютер из CSV-файла и пишет результат в один из файлов — alive или dead. Таким образом я узнаю, активна или нет данная рабочая станция, и в случае необходимости связываюсь с пользователями, которые на ней работают.

Я также написал несколько сценариев для резервирования данных. Интереснее всего использовать программу PKZIP для создания резервной копии каталога My Documents, почты и некоторых других вещей в виде .zip-файла сначала на локальной системе, а затем при переносе файла-архива в сеть и его переименовании с привязкой ко времени и дате создания резервной копии. Пользователь самостоятельно может запустить сценарий или же положиться на расписание, по которому сценарий будет запущен. Сценарий восстановления просматривает имена файлов в архиве, спрашивает, какой файл нужно восстановить, и копирует его или на прежнее место, или в любое другое по выбору пользователя. Реальная польза такого подхода в том, что файлы из резервного архива можно без труда просмотреть — они упакованы не в каком-то специальном формате, как при использовании обычных решений резервирования, с которыми я знаком. Вы просто просматриваете .zip-файл и выполняете двойной щелчок на нужном документе.

Не сталкивались ли вы с задачами, решение которых при использовании сценариев оказывалось слишком сложным?

Работа с политиками и разрешениями. Windows в компаниях не всегда распространяется как некое плановое мероприятие. Скажем, нам потребовался домен — хорошо, давайте добавим домен. И когда это происходит, у ИТ-специалистов начинаются проблемы с применением политик и управлением Group Policy. Для применения политик мы используем Active Administrator (производства ScriptLogic), который позволяет применять разрешения с помощью шаблонов. Я могу создать набор разрешений для отдельного пользователя, применить индивидуальные шаблоны на группу, а также добавить пользователей в группу. Для удаления разрешений надо просто деактивировать шаблон. Active Administrator поддерживает функцию ведения отчетов, так что у нас всегда есть данные о том, какие разрешения были установлены. При необходимости мы можем создать журналы изменений, где для каждого объекта AD будут указаны выполненные изменения.

Что вы думаете о Windows PowerShell?

Я загрузил этот продукт, но еще мало с ним поработал. Переход от Windows Script Host (WSH) к PowerShell поражает, хотя бы только потому, что PowerShell «умеет» так много. При использовании WSH приходится постоянно искать обходные маневры, зачастую громоздкие, для решения возникающих проблем, приспосабливаться к его недостаткам. Когда я начинаю работать с PowerShell с опытом работы на WSH, я спрашиваю себя — с чего начать? Что такое объект? Хотелось бы увидеть в Longhorn что-то похожее на функцию script this, которая реализована в Generate SQL Server Scripts Wizard в версии SQL Server 2005 Management Studio: в автоматическом режиме создается сценарий всех действий, выполняемых в Microsoft Management Console, а потом сценарий настраивается так, как требуется в каждом конкретном случае.

Вы действуете как типичный разработчик сценариев для Windows: отыскиваете код для решения частной задачи администрирования, настраиваете его и добавляете собственный код.

Я не знаю, что такое «типичный», но в остальном все верно. Я часто думаю, что когда у меня появится свободное время, надо будет вернуться к уже написанным сценариям и добавить в них новые функции. Но на деле получается, что, как только у меня освобождается время за счет внедрения только что написанного сценария, я перехожу к очередному проекту — и все начинается снова.