Самоучитель
системного администратора

6.4. Средства автоматизации — сценарии

Управление в режиме консоли, хотя и требует от администратора наличия опыта работы, привлекательно тем, что позволяет полностью автоматизировать процесс, например, выполнять заданные операции по расписанию.

При изучении правил использования сценариев могут помочь следующие ресурсы:

  • Script Center
    (http://technet.microsoft.com/en-us/scriptcenter/default)
  • Центр технологий Windows PowerShell
    http://go.microsoft.com/fwlink/?LinkID=102372)
  • Блог Windows PowerShell
    (http://go.microsoft.com/fwlink/?LinkID=128557)
  • Windows PowerShell Script Repository
    (http://go.microsoft.com/fwlink/?LinkId=169615)

Использование командной строки

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

Обратите внимание, что командный интерпретатор может выполнять циклы, анализировать условия, "разбирать" текстовые файлы и т. д. Если среди команд нет тех, которые выполняют нужные операции, можно использовать внешние утилиты и обрабатывать код их завершения. Например, для анализа членства пользователя в группе службы каталогов можно применить утилиту ifmember (доступно с сайта Microsoft) и проанализировать ее результат. Приведем пример такого блока сценария командной строки:

Примеры использования командных сценариев доступны в Интернете.

Сценарии Visual Basic

В Windows возможно выполнение сценариев, написанных на таких языках программирования, как VBScript, JScript и JScript.NET. Использование этих языков программирования оправдано в тех случаях, когда нужно проанализировать параметры приложений, членство в группах, создать файлы отчетов, создать интерфейс программы и т. п. Иными словами, с их помощью создается новая программа компьютера.

Для исполнения программного кода сценария на компьютере должна присутствовать система, которая интерпретирует этот код и обеспечивает взаимодействие с другими программами. Обеспечивает такую функциональность специальный сервер сценариев — Windows Script Host (WSH).

    Примечание

    Кроме упомянутых языков программирования администраторы могут применять и другие технологии, такие как Perl, TCL, REXX, Python и др. Для этого необходимо установить соответствующие модули интерпретаторов разработки третьих фирм.

WSH встроен в операционные системы Windows 98/ME/2000 и старше. Для Windows 95 можно бесплатно установить WSH, загрузив соответствующий файл с информационного сервера разработчика.

Каждая последующая версия WSH существенно функциональнее предыдущей, поэтому для систем, находящихся в эксплуатации, целесообразно обновить эту службу до последней версии.

Как правило, администраторы редко создают нужные сценарии "с нуля". Обычно ищется подходящий пример, который лишь незначительно модернизируется. Подобные коды достаточно широко представлены в Сети, а на сайте разработчика ОС можно воспользоваться ресурсами Центра сценариев по адресу http://technet. microsoft.com/ru-ru/scriptcenter/default.aspx.

На рис. 6.11 представлено окно одной из коллекций, свободно доступных с сайта разработчика (Portable Script Center, www.microsoft.com).

Рис. 6.11.
Script Center

Многие администраторы чувствуют себя недостаточно уверенно при составлении сценариев. В то же время применение сценариев существенно облегчает администраторские функции. В таких ситуациях могут помочь специальные продукты, которые позволяют составить сценарий в визуальном режиме, просто добавляя необходимые шаги (проверки, условия, действия и т. п.) путем перетаскивания мышью и задания необходимых характеристик каждого шага.

Один из таких продуктов приведен на рис. 6.12. Это программа AutoMate от компании Network Automation, Incorporated (NAI) (www.networkautomation.com).

Рис. 6.12.
Мастер создания автоматического сценария управления системой

Intelligent Platform Management Interface

Существует стандарт, который описывает требования по управлению компьютерными платформами — спецификация IPMI (Intelligent Platform Management Interface). Серверы, удовлетворяющие данной спецификации, могут управляться удаленно с консоли. В число действий, доступных администратору, входит:

  • удаленное включение, выключение и перезагрузка сервера независимо от состояния операционной системы;
  • обновление BIOS;
  • просмотр параметров состояния сервера (температура, уровни напряжения, состояние датчиков, установленных на сервере), в том числе получение автоматического оповещения о событиях в работе системы по сети.

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

Windows Management Interface

Windows Management Interface (WMI) — это технология управления Windows-компьютерами, реализующая стандарты Web-управления предприятием (WBEM, Web-based Enterprise Management. WBEM разработан компанией Distributed Management Task Force — http://www.dmtf.org/. В некотором смысле можно считать WMI "развитием" протокола SNMP для программных сред.). Технология WMI реализована для всех операционных систем Windows, начиная с Windows 95.

Технология используется, преимущественно, для доступа к оборудованию (получению данных о составе оборудования, его параметрах, состоянии и т. п.).

Стандартами WBEM предусмотрена типовая схема управляемых объектов — Common Information Model (CIM). Эта схема реализована в WMI как пространство имен Cimv2. В этом пространстве имен по умолчанию выполняются WMI-команды.

В Windows WMI выполняет функции сбора данных и управления конфигурацией компьютера через специализированные программные модули, называемые провайдерами (providers). Существуют провайдеры для управления драйверами Windows, операционной системой, Internet Explorer, Microsoft Office, службами каталогов и т. п. Этот список постоянно пополняется, и при установке на компьютер какого-либо программного обеспечения перечень управляемых объектов может существенно расшириться.

На практике для применения WMI в целях контроля системы нужно знать, какие классы и пространства имен доступны для использования, какие названия имеют соответствующие элементы (instance). Полный перечень доступных к использованию в конкретной системе элементов WMI можно получить, например, с помощью средств WMI Object Browser и WMI CIM Studio, входящих в состав WMI Administrative Tools1 (рис. 6.13).

Рис. 6.13.
Один из экранов WMI Administrative Tools

Для использования WMI необходимо знание иерархической структуры объектов системы. Запомнить ее практически невозможно, поэтому при составлении запросов могут помочь такие продукты, как WMI CIM Studio. С помощью данной программы администратор имеет возможность подключиться к любому пространству имен, зарегистрированному в системе, отобразить существующие классы объектов, увидеть свойства класса (те характеристики, которые можно получить при исполнении запроса) и методы (те параметры, которые можно установить в команде), перечислить существующие экземпляры. Здесь же можно открыть окно, в котором попробовать создать собственный WMI-запрос и сразу увидеть его результаты. Средства среды разработки WMI Administrative Tools удобны тем, что наряду с просмотром существующих на компьютере классов WMI-администратор может получить значения реальных объектов (на рисунке показано перечисление всех предоставляемых в совместный доступ папок на компьютере), составить и отладить WQL-запросы.

Эти утилиты отображают полный список существующих классов, значения их свойств и т. п. Часто требуется получить значения типовых характеристик, например, состояния служб, параметров физических или логических дисков и т. д. В этом случае можно воспользоваться подборкой уже готовых WMI-сценариев — программой Scriptomatic (также бесплатно доступна к загрузке с сайта Microsoft).

Программа содержит большую подборку готовых сценариев, которые можно использовать для составления необходимых запросов.

Утилита Scriptomatic (рис. 6.14) позволяет найти сценарий, с помощью которого можно получить желаемые сведения о работе системы, и на его основе составить WQL-запрос.

Рис. 6.14.
Утилита Scriptomatic 2.0

WMI Query Language

Практическое использование интерфейса WMI для получения данных о состоянии оборудования или программной среды во многом напоминает работу с базой данных: вам необходимо указать, какие параметры должны быть получены от какого объекта и при каких ограничениях (фильтрах). Язык запросов для WMI так и называют — WMI Query Language (WQL). Даже команды WQL принято называть запросами. Запросы WMI обрабатываются в специальном интерпретаторе — wmic (WMI Command-line tool). Объекты WMI доступы и для использования в Visual Basic, что позволяет составлять любые сценарии.

После запуска интерпретатора на экране появляется окно, аналогичное окну командной строки, в котором следует вводить необходимые команды. В этой утилите доступна объемная подсказка, вызываемая по ключу /?. Однако для успешной работы в этом режиме необходимо четко представлять, в каком классе находится объект, характеристики которого вы хотите получить или в настройки которого предполагается внести изменения.

Язык WQL может быть использован только для получения той или иной информации. Запросы WQL не позволяют добавить данные или изменить определенные параметры. Если вам необходимо выполнить какие-либо настройки, то сначала следует получить (выбрать) с помощью запросов WQL соответствующий объект, а затем, используя допустимые для данного элемента методы управления, провести желаемые изменения.

Варианты применения WMI

Существуют различные методы использования возможностей интерфейса WMI.

Для автоматизации управления компьютерными системами доступ к WMI может быть реализован через Windows Scripting Host. Это позволяет администратору создавать сценарии управления системами. Вы можете запросить характеристики какого-либо объекта с помощью языка WQL и изменить значения некоторых из них, присвоив новые величины параметрам выбранного объекта.

Определенную помощь в представлении о структуре классов WMI может оказать программа WBEMTest.exe, имеющаяся на каждом компьютере с установленным WMI. Используя программу WBEMTest.exe, можно перечислить классы WMI и отобразить характеристики отдельных элементов. Утилита позволяет выполнить WQL-запрос и увидеть его результат на экране. Хотя утилита предназначена для поддержки и имеет ограниченные возможности, но она может помочь разобраться с WMI-классами.

Для тех, кто предполагает использовать управление системами через WMI, целесообразно установить на компьютер какую-либо программу просмотра WMI. Например, весьма неплохими возможностями обладает программа CIM Studio, которая может быть свободно загружена с сайта Microsoft (рис. 6.13).

Для использования WMI необходимо знание иерархической структуры объектов системы. Запомнить ее практически невозможно, поэтому при составлении запросов могут помочь такие продукты, как WMI CIM Studio. С помощью данной программы администратор имеет возможность подключиться к любому пространству имен, зарегистрированному в системе, отобразить существующие классы объектов, увидеть свойства класса (характеристики, которые можно получить при исполнении запроса) и методы (параметры, которые можно установить в команде). Здесь же можно открыть окно, в котором попробовать создать собственный WMI-запрос и сразу увидеть его результаты.

    Примечание

    Те, кто использует в своей работе Microsoft Visual Studio.NET, могут применять входящие в ее состав утилиты. Если ни одна из перечисленных программ по каким-либо причинам вас не устраивает, то в Интернете легко можно найти и другие утилиты.

Примеры

Большинство практических WMI-сценариев создается на основе того или иного примера, который найден в Интернете. Приведу несколько возможных вариантов WMI-сценариев.

Перечисление логических дисков системы.

Следующий сценарий на Visual Basic выводит на экран наименования логических дисков, присутствующих в системе.

При выполнении цикла переменной Disk поочередно присваиваются все элемен-ты класса "логический диск". Затем сценарий (третья его строчка) выводит на экран сообщение с логическим именем этого диска.

Перезапуск остановившихся служб системы.

Следующий пример кода на Visual Basic может быть использован для переза-пуска остановленных служб системы:

Первая строка кода создает коллекцию объектов, удовлетворяющих условию выборки, заданному в WQL-запросе. Этот запрос выбирает все службы, для которых установлен автоматический режим запуска и которые в настоящий момент остановлены. Пятая строка кода организует цикл, выполняющий метод запуска служб, найденных на предыдущем этапе.

Для данного сценария можно установить автоматический запуск через определенные промежутки времени, чтобы гарантировать работу всех служб компьютера. В свойствах службы есть опция восстановления, в которой можно задать параметры перезапуска службы после ее аварийной остановки. Однако если служба по тем или иным причинам не стартовала при запуске системы или была остановлена вручную, то автоматически она также не будет запущена. Приведенный в примере код позволяет автоматически находить такие службы и запускать их.

PowerShell

PowerShell представляет собой средство, разработанное Microsoft для автоматизации различных задач и состоящее из интерпретатора и языка высокого уровня. PowerShell входит в состав Windows 7/Windows 2008 и может быть загружен для предыдущих версий. Язык реализован на Microsoft .NET Framework, интегрирует в себя доступ к WMI, COM, ADSI.

Сценарии PowerShell составляются из командлетов (cmdlet). Командлет объединяет в себе команду и объект, над которым она выполняется, и обычно называется по принципу глагол-объект. Например, командлет Get-Content возвратит (get) содержимое (content) того элемента, который будет указан в параметрах: Так, Get-Content c:\test.txt выведет на экран содержимое файла c:\test.txt.

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

Например, следующий сценарий выведет на экран список созданных в течение последнего дня файлов:

Первый командлет возвращает список всех файлов на диске С (ключ R выполняет рекурсивный поиск), полученные данные передаются на обработку, сценарий выбирает параметр creationtime (дату создания) и сравнивает его с текущей датой минус 1 день. Этот сценарий можно модифицировать, например, изменить маску и выбирать файлы журналов (-Filter*. log), сменить условие (меньше — lt) и перенаправить вывод на команду удаления (% {del $_}). Таким образом можно автоматически удалять устаревшие журналы с компьютера, если данную команду настроить на автоматическое выполнение.

Помимо командной строки интерпретатора в последних версиях PowerShell появилась и графическая среда — интегрированная среда сценариев (ISE — Integrated Script Environment) Windows PowerShell. Это приложение, в котором можно выполнять команды PowerShell, создавать, тестировать и отлаживать скрипты с использованием удобного графического интерфейса с цветовым кодированием (рис. 6.15).

Следует иметь в виду, что в примере рис. 6.15 применен объект WMI. Это широко используемая практика в PowerShell для доступа к параметрам оборудования компьютера.

Рис. 6.15.
Интегрированная среда сценариев PowerShell

Обратите внимание, что при начале работы с PowerShell желательно настроить личный профиль — сценарий, который исполняется при каждом открытии интерпретатора. В этом профиле можно определить такие настройки, как локальный путь, параметры безопасности,


1Эти программы бесплатно можно загрузить с сайта Microsoft.


Рейтинг@Mail.ru