Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Соединение с подсистемой WMI
Лабораторная работа №8 Использование технологии Windows Management Instrumentation для работы с сервисами и процессами. Цель: изучить объектну модель WMI, получить навыки создания скриптов для работы с сервисами Windows.
Теоретические положения Информационная схема CIM. Объектная модель WMI. Назначение и возможности WMI Среди инструментов и средств автоматизации в операционной системе Windows особое место занимает технология Windows Management Instrumentation (WMI). Технология WMI — это созданная фирмой Microsoft реализация модели управления предприятием на базе Web (Web-Based Enterprise Management, WBEM), которая разработана и принята рабочей группой по управлению распределенными системами (Distributed Management Task Force, DMTF), при участии таких компаний, как BMC Software, Cisco Systems, Intel и Microsoft. Задачей WBEM была разработка таких стандартов для удаленного управления информационной средой предприятия, которые позволили бы управлять всеми физическими и логическими компонентами этой среды из одной точки и не зависели бы при этом от конкретного оборудования, сетевой инфраструктуры, операционной системы, файловой системы и т. д. Для этого была предложена схема CIM (Common Information Model), которая представляет физическую и логическую структуры компьютерной системы в виде единой расширяемой объектно-ориентированной информационной модели и определяет единые интерфейсы для получения информации о любом компоненте этой модели. В ранних версиях Windows для администрирования операционной системы приходилось пользоваться несколькими утилитами и инструментами, т. к. данные о компонентах системы хранились в различных источниках (база пользователей SAM, журнал событий Event Log, системный реестр и т. д.), доступ к которым осуществлялся с помощью разных утилит (диспетчер пользователей — User Manager, просмотрщик журнала событий — Event Log Viewer, редактор реестра — Regedit) и программных интерфейсов (Network API для работы с данными о пользователях, Event Log API для просмотра сведений о произошедших событиях, Registry API для чтения или редактирования системного реестра). Позже появилась встроенная в операционную систему консоль управления MMC (Microsoft Management Console), с помощью которой можно из одной точки управлять большинством логических и физических компонентов компьютерной сети, построенной на основе Windows. Технология WMI — это глобальная концепция настройки, управления и слежения за работой различных частей корпоративной компьютерной сети. В частности, используя WMI, можно с помощью специальных утилит или сценариев Windows Script Host (WSH) решать следующие задачи. 1. Управление различными версиями операционной системы Windows. С помощью сценариев WMI можно обращаться к системным счетчикам производительности, анализировать журналы событий (Event Logs), работать с файловой системой, управлять запущенными процессами и сервисами, создавать и удалять совместно используемые ресурсы и т. д. При этом все операции можно выполнять одинаковым образом как на локальной, так и на удаленной машине. 2. Управление ресурсами и службами сети. Сценарии WMI позволяют настраивать сетевые службы (DNS, DHCP и т. п.) и управлять сетевыми устройствами, поддерживающими технологию SNMP (Simple Network Management Protocol). 3. Мониторинг состояния системы в реальном времени. Можно создавать сценарии-обработчики событий WMI, которые позволяют отслеживать и нужным образом обрабатывать события, связанные с теми или иными изменениями в информационной системе (например, появление определенной записи в журнале событий на локальном или удаленном компьютере, заполнение жесткого диска сервера до определенного предела, изменение определенного ключа в системном реестре и т. п.). 4. Управление серверными приложениями Windows. С помощью WMI можно управлять различными приложениями Microsoft: Application Center, Operations Manager, Systems Management Server, Internet Information Server, Exchange Server, SQL Server. Общая структура WMI WMI состоит из трех частей, показанных на рис. 1: Рисунок 1 – Архитектура WMI
1. Управляемые объекты/ресурсы (managed resources) — любые логические или физические компоненты информационной системы, доступ к которым может быть получен с помощью WMI. В качестве управляемых ресурсов могут выступать, например, файлы на жестком диске, запущенный экземпляр приложения, системное событие, предоставленный в общее пользование ресурс, сетевой пакет или установленный в компьютере процессор. 2. Ядро WMI (WMI infrastructure). Это связующее звено архитектуры WMI, отвечающее за связь управляющих программ с управляемыми объектами. Ядро WMI, в свою очередь, можно разделить на три части: менеджер объектов CIM (Common Information Model Object Manager, CIMOM), репозиторий (хранилище классов и объектов) CIM и провайдеры WMI. Кроме этого, для доступа к WMI с помощью сценариев необходима специальная библиотека поддержки сценариев WMI (WMI scripting library), которая располагается в файле wbemdisp.dll в каталоге %SystemRoot%\System32\Wbem. 3. Управляющие программы(management applications), которые являются потребителями сервисов WMI. В качестве потребителей могут выступать полновесные Win32-приложения, Web-приложения, сценарии WSH или другие инструменты администрирования, с помощью которых происходит доступ к управляемым объектам посредством WMI. Управляющие программы (потребители) различных типов применяют разные механизмы для доступа к WMI, т. е. используют разные интерфейсы прикладного программирования (Application Programming Interface, API). Программы Win32 могут взаимодействовать с WMI напрямую, используя для этого WMI COM API — главный API управления. ActiveX-компоненты WMI реализуют API другого уровня: разработчики Web-приложений применяют средства управления ActiveX для создания сетевых интерфейсов к данным WMI. Еще один способ управления WMI предполагает использование сценариев WSH с помощью специального API WMI для сценариев (такие сценарии мы иногда будем называть просто сценариями WMI). 1.2.1 Провайдеры WMI Провайдеры WMI обеспечивают связь между менеджером объектов CIM и управляемыми ресурсами: провайдеры предоставляют для CIMOM данные об управляемом объекте, обрабатывают запросы от управляющих программ и генерируют сообщения о наступлении определенных событий. При этом провайдер WMI общается с управляемым объектом с помощью специфического API этого объекта, а с CIMOM — посредством стандартного интерфейса прикладного программирования WMI (WMI API). Таким образом, провайдеры скрывают детали внутренней реализации управляемых объектов, позволяя CIMOM обращаться к этим объектам единообразно, используя один и тот же WMI API. Фактически провайдеры WMI являются серверами COM или DCOM, которые представлены динамическими библиотеками (DLL), находящимися чаще всего в каталоге %SystemRoot%\System32\Wbem. WMI включает в себя множество встроенных провайдеров для операционных систем семейства Windows, которые предназначены для получения данных из известных системных источников таких, как подсистема Win32, журналы событий, системный реестр, системные счетчики производительности. Таблица 1. Стандартные провайдеры WMI
1.2.2 Менеджер объектов CIM Задачей менеджера объектов CIM (CIMOM) является обеспечение взаимодействия между потребителями сервисов WMI (управляющими приложениями) и провайдерами WMI. CIMOM обрабатывает все запросы, которые поступают от управляющих приложений к WMI, и обеспечивает доставку к этим приложениям информации, полученной в результате выполнения таких запросов: 1. Регистрация провайдеров. Все провайдеры WMI должны быть зарегистрированы с помощью CIMOM; информация о провайдере (например, тип этого провайдера или путь к библиотеке DLL, которой он представлен) хранится в репозитории CIM. 2. Переадресация запросов. Используя информацию о зарегистрированных провайдерах, CIMOM перенаправляет полученный от управляющего приложения запрос к нужному провайдеру. 3. Доступ к удаленной машине с WMI. Управляющее приложение может обратиться с запросом к любой удаленной машине, на которой установлен WMI. При этом происходит соединение с CIMOM на удаленной машине, после чего все запросы здесь должны обрабатываться точно так же, как и на локальной машине. 4. Обеспечение безопасности. Защита ресурсов WMI состоит в том, что CIMOM проверяет права пользователя, который пытается воспользоваться сервисами WMI на локальном или удаленном компьютере. 5. Обработка запросов управляющих приложений. Потребители WMI обращаются к управляемым объектам с помощью специального языка запросов WMI Query Language (WQL). Если провайдер запрашиваемого объекта не поддерживает напрямую WQL, то CIMOM должен преобразовать этот запрос к тому виду, в котором он сможет быть обработан этим провайдером. 6. Обработка событий WMI. Поддержка CIMOM этой функции позволяет потребителям WMI создавать обработчики событий, которые возникают при определенном изменении в управляемом объекте (примеры таких событий — снижение объема свободного пространства на жестком диске до заданного значения или запуск на компьютере определенного приложения). Для этого CIMOM периодически опрашивает нужный объект (интервал опроса задается в управляющем приложении) и генерирует событие как только обнаруживает, что заданное заранее условие возникновения события выполнено. В Windows функциональность менеджера CIM обеспечивает файл winmgmt.exe, который находится в каталоге %SystemRoot%\System32\Wbem (этот файл запускается как сервис). Структура классов WMI Всякому ресурсу, управляемому с помощью WMI, соответствует специальный класс WMI; каждый класс имеет четко определенную структуру и содержит свойства, методы и квалификаторы (свои квалификаторы могут быть также у свойств и методов). Классы описываются с помощью специального языка MOF (Managed Object Format), который, в свою очередь, базируется на языке IDL (Interface Definition Language), применяемом для описания интерфейсов COM-объектов. После определения структуры класса с помощью MOF разработчик может добавить откомпилированное представление этого класса в репозиторий CIM с помощью стандартной утилиты mofcomp.exe. Основные типы классов CIM: 1. Абстрактный класс (abstract class) — это шаблон, который служит исключительно для образования новых классов-потомков (абстрактных и неабстрактных). Абстрактный класс не может непосредственно использоваться для получения экземпляра управляемого ресурса. 2. Статический класс (static class) определяет данные, которые физически хранятся в репозитории CIM (к такому типу относятся, например, данные о собственных настройках WMI). Вследствие этого для доступа к экземплярам статических классов не нужно прибегать к помощи каких-либо провайдеров. 3. Динамический класс (dynamic class) моделирует управляемый ресурс, данные о котором соответствующий провайдер возвращает в динамическом режиме. Кроме трех основных типов классов в CIM выделяется еще один специальный тип — ассоциативный класс (association class) — это абстрактный, статический или динамический класс, который описывает логическую связь между двумя классами или управляемыми ресурсами (например, ассоциативный класс Win32_SystemProcesses связывает класс Win32_Process, экземпляры которого соответствуют запущенным в системе процессам, с классом Win32_ComputerSystem, в котором представлены общие настройки компьютерной системы). Все классы CIM можно разделить на четыре группы по принадлежности к различным информационным моделям. Системные классы. Системными называются те классы, которые служат для задания конфигурации и выполнения внутренних функций WMI (определение пространств имен, обеспечение безопасности при работе с пространствами имен, регистрация провайдеров, подписка на события WMI и формирование сообщений о наступлении таких событий). Системные классы могут быть абстрактными или статическими. Системные классы можно легко отличить от других по названию — имена всех системных классов начинаются с символов "__" (двойное подчеркивание), например, __SystemClass, __NAMESPACE, __Provider или __Win32Provider. Классы модели ядра (основной модели) (core model). К этой модели относятся абстрактные классы, которые обеспечивают интерфейс со всеми областям управления. Названия таких классов начинаются с префикса "CIM_". Примерами классов модели ядра могут служить класс CIM_ManagedSystemElement (свойства этого класса идентифицируют управляемые компоненты системы) и его наследники CIM_LogicalElement (описание логического управляемого ресурса, например, файла или каталога) и CIM_PhysicalElement (описание физического управляемого ресурса, например, периферийного устройства). Классы общей модели (common model). Общая модель является расширением основной модели — здесь представлены классы, которые являются специфическими для задач управления, но не зависят от конкретной технологии или реализации (другими словами, не зависят от типа операционной системы). Названия таких классов, как и классов модели ядра, начинаются с "CIM_". Класс CIM_LogicalFile, описывающий файл, является примером класса общей модели, т. к. файловая система присутствует практически в любой операционной системе. Классы модели расширения (extension model).Эта категория классов включает в себя специфические для каждой технологии или реализации дополнения к общей модели. В WMI определено большое количество классов, которые соответствуют ресурсам, специфическим для среды Win32 (имена этих классов начинаются с префикса "Win32_" ). Например, классы Win32_PageFile и Win32_ShortCutFile, которые описывают соответственно файлы подкачки Windows и файлы-ярлыки, являются потомками класса CIM_LogicalFile из общей модели. Свойства классов используются для однозначной идентификации экземпляра класса, представляющего конкретный управляемый ресурс, а также для описания текущего состояния этого ресурса. Рассмотрим классы из пространства имен CIMV2, являющиеся шаблонами для служб и процессов Windows. Напомним, что для просмотра списка всех служб, установленных на компьютере, можно воспользоваться оснасткой Службы (Services) консоли управления MMC. Службам Windows в WMI соответствуют экземпляры класса Win32_Service; основные свойства этого класса приведены в таблице 2. Таблица 2. Некоторые свойства класса Win32_Service
Таблица 3. Методы класса Win32_Service
Рассмотрим теперь класс Win32_Process, экземпляры которого соответствуют запущенным в операционной системе процессам. Напомним, что информацию о всех процессах можно получить с помощью Диспетчера задач (Task Manager), запускаемого нажатием клавиш <Ctrl>+<Alt>+<Del> . Количество выводимых на экран параметров для процессов зависит от настроек Диспетчера задач (Task Manager): выбрав в меню Вид (View) пункт Выбрать столбцы (Choose columns), можно отметить интересующие нас параметры.
Параметрам запущенного процесса соответствуют свойства класса Win32_Process. Таблица 4. Некоторые свойства класса Win32_Process
Таблица 5. Методы класса Win32_Process
Таким образом, методы класса Win32_Process позволяют выполнять над процессами те же действия, которые можно осуществить в Диспетчере задач Windows с помощью контекстного меню и кнопки Завершить процесс (Terminate process) Соединение с подсистемой WMI Для получения из сценария доступа к подсистеме WMI на локальном или удаленном компьютере существуют два варианта: с использованием объекта SWbemLocator и с помощью так называемого WMI-моникера (WMI moniker) "WinMgmts:". 1.4.1 Соединение с помощью объекта SWbemLocator Объект SWbemLocator позволяет установить соединение с определенным пространством имен WMI на удаленном компьютере от имени заданной учетной записи (на локальном компьютере соединение с WMI всегда производится от имени текущей учетной записи). Использование этого объекта бывает необходимо, если в сценарии нужно явно задать имя пользователя и пароль для подключения к пространству имен WMI, либо сценарий используется внутри HTML-страницы. Для создания объекта SWbemLocator в сценарии VBScript нужно вызвать функцию CreateObject() и указать в качестве ее аргумента программный идентификатор WbemScripting.SWbemLocator, а затем использовать метод ConnectServer.
Set objLocator = CreateObject ("WbemScripting.SWbemLocator") objSWbemServices = objSWbemLocator.ConnectServer([strServer], [strNamespace], [strUser], [strPassword], [strLocale], [strAuthority], [iSecurityFlags], [objWbemNamedValueSet]) где rServer –имя компьютера (локального или удаленного), если параметр отсутствует, или вместо него стоит точка (.), то подключение произойдет к локальной системе; strNamespace –пространство имен (например, root\CIMV2), если оно отсутствует, то будет взято пространство по умолчанию (оно прописано в реестре в ветке HKLM\SOFTWARE\Microsoft \WBEM\Scripting\ Default Namespace);
strUser –имя пользователя в виде Domain\Username, этот параметр стоит задавать только в том случае, если происходит попытка подключится к удаленной системе, для локального подключения произойдет ошибка; strPassword - пароль пользователя. strLocale - код локализации (если не указано, то текущий язык). strAuthority –имя домена, если он не был прописан в параметре strUser, повторное указание названия домена приведет к ошибке. iSecurityFlags – время ожидания подключения, например, 0 – перейти к следующей строке кода только после подключения к серверу, 128 – максимальное время ожидания, которое ровно 2 минутам. objWbemNamedValueSet – контекстная информация, которая может использоваться провайдером. Пример. 'Вывод списка запущенных процессов Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") set objServices = objSWbemLocator.ConnectServer(".","root\CIMV2") Set colNamespaces = objServices.InstancesOf("Win32_Process") For Each objNamespace In colNamespaces strResult = strResult & objNamespace.Name & VbCrLf Next Wscript.Echo strResult
1.4.2 Соединение с помощью моникера WMI Альтернативным вариантом получения доступа к подсистеме WMI на локальном или удаленном компьютере является использование WMI-моникеров. Понятие моникер относится к COM-объектам, где под этим термином понимается строка (отображаемое имя, display name ), задающая путь к объекту, экземпляр которого должен быть создан в клиентском приложении. В контексте сценариев VBScript моникер WMI — это строка определенной структуры, передаваемая в качестве параметра функции GetObject, в результате выполнения которой возвращается ссылка на определенный объект или конкретный экземпляр объекта библиотеки поддержки сценариев WMI. Моникеры могут состоять из трех частей: 1. обязательный префикс "WinMgmts:"; Set colProcess = GetObject("WinMgmts:").InstancesOf("Win32_Process") Или Set objService = GetObject("WinMgmts:") Set colProcess = objService.InstancesOf("Win32_Service ") 2. необязательные параметры, определяющие настройки безопасности при работе с WMI; 3. необязательный путь к нужному объекту WMI. Пример. 'Вывод списка служб Windows set objServices = GetObject("WinMgmts:\\.\root\CIMV2").InstancesOf("Win32_Service") For Each objNamespace In objServices strResult = strResult & objNamespace.Name & VbCrLf Next Wscript.Echo strResult
Язык запросов WMI Для обращения к объектам WMI используется специфический язык запросов WMI Query Language (WQL), который является одним из разновидностей SQL. Основное его отличие от ANSI SQL - это невозможность изменения данных, то есть с помощью WQL возможна лишь выборка данных с помощью команды SELECT. Помимо ограничений на работу с объектами, WQL не поддерживает такие операторы как DISTINCT, JOIN, ORDER, GROUP, математические функции. Конструкции IS и NOT IS применяются только в сочетании с константой NULL. Общий синтаксис запроса WQL выглядит так: SELECT свойства FROM имя_класса WHERE свойство оператор значение
Пример: ' Выбрать все значения класса Win32_Product и вывести все его свойства SELECT * FROM Win32_Product ' Выбрать все значения класса Win32_Product и вывести свойство Version SELECT Version FROM Win32_Product ' Выбрать значения класса Win32_Product, где свойство Description равно ' "Microsoft Office", и вывести свойство Version SELECT Version FROM Win32_Product WHERE Description = "Microsoft Office"
Как видно из примера, оператор FROM - это источник (класс), коллекцию экземпляров которого нужно получить, а оператор WHERE - это фильтр в запросе.
Пример. Сценарий выполняет запись в текстовый файл описание всех программных продуктов, установленных на локальном компьютере.
' Подключение к пространству имен Set mSWbemServices = GetObject("winmgmts:\\.\Root\CIMv2") ' Получение объекта программных продуктов Set mProds = mSWbemServices.ExecQuery("SELECT * FROM Win32_Product") ' Перебор коллекции возвращенных объектов For Each mPr in mProds info = info & mPr.description & VbCrLf Next ' Выводим результат в текстовый файл TextOut info, "s.txt"
' Процедура для записи информации в файл Sub TextOut (Text, File) ' Объявляем переменные Dim objFSO, FOut ' Создаем объект FileSystemObject Set objFSO=WScript.CreateObject("Scripting.FileSystemObject") ' Открываем выходной файл для записи Set FOut = objFSO.OpenTextFile (File,2,true) ' Записываем текстовую строку в файл FOut.WriteLine Text ' Закрываем выходной файл FOut.Close End Sub
Задания для выполнения
Контрольные вопросы. 1 Из чего состоят процесс и поток в среде Windows? 2 Что такое планирование потоков? 3 Какие классы приоритетов применяются в ОС Windows? 4 В чем отличие базового и текущего приоритетов? 5 Из каких компонентов состоит WMI. 6 В каком режиме работы процессора выполняются сервисы ОС Windows? 7 Как процессы используют файл подкачки?
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 184. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |