Лабораторная работа №8 - Вернуться на главную страницу

advertisement
Лабораторная работа №8
Использование технологии Windows Management Instrumentation
для работы с сервисами и процессами.
Цель: изучить объектну модель WMI, получить навыки создания
скриптов для работы с сервисами Windows.
1
Теоретические положения
1.1 Информационная схема 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.
1.2 Общая структура 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
Провайдер
DLL-файл
Описание
Провайдер каталога Active Dsprov.dll
Позволяет обращаться к объектам Active
Directory(Active
Directory
Directory как к объектам WMI
provider)
Провайдер журнала событий Ntevt.dll
Обеспечивает
управление
журналом
(Event Log provider)
событий (выборка по определенному
критерию записей для чтения, создание
Провайдер
системных Wbemperf.dll
счетчиков
производительности
(Perfomance
Counter
provider)
Провайдер реестра (Registry Stdprov.dll
provider)
Провайдер SNMP-устройств Snmpincl.dll
(SNMP provider)
Провайдер
драйверов Wmiprov.dll
устройств (WDM provider)
Провайдер
подсистемы Cimwin32.dll
Win32 (Win32 provider)
Провайдер
Msiprov.dll
инсталлированных
программных
продуктов
(Windows Installer provider)
1.2.2
резервных копий и очистка журнала,
изменение настроек и т. д.). Также этот
провайдер
позволяет
обрабатывать
события,
генерируемые
журналом
(например, добавление в журнал записи
определенного типа)
Обеспечивает
доступ
к
счетчикам
производительности, т. е. к данным,
позволяющим
численно
оценивать
производительность системы
Позволяет читать данные из реестра,
создавать и модифицировать там ключи и
разделы.
Кроме
этого,
провайдер
обеспечивает генерацию события WMI
при изменении определенного ключа или
ветви реестра
Является шлюзом для доступа к системам
и устройствам, которые управляются с
помощью протокола SNMP (Simple
Network Management Protocol)
Позволяет получить доступ к информации
низкого уровня о драйверах устройств
Windows Driver Model (WDM); в качестве
таких
устройств
могут
выступать,
например, порты ввода/вывода или
сетевые платы
Обеспечивает доступ к информации о
компьютере,
операционной
системе,
подсистеме
безопасности,
дисках,
периферийных устройствах, файловых
системах,
файлах, папках,
сетевых
ресурсах, принтерах, процессах, сервисах
и т. п.
Позволяет получить информацию об
инсталлированном
программном
обеспечении
Менеджер объектов 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 (этот файл запускается как
сервис).
1.3 Структура классов 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
Свойство
Описание
AcceptPause
Свойство логического типа, значение которого равно True, если службу
можно приостановить, и равно False в противном случае
AcceptStop
Свойство логического типа, значение которого равно True, если службу
можно остановить, и равно False в противном случае
Caption
Краткое описание службы
Description
Полное описание службы
DesktopInteract Свойство логического типа, значение которого равно True, если служба
может взаимодействовать с рабочим столом пользователей, и равно False
в противном случае
DisplayName
Имя службы, которое выводится в списке служб
ErrorControl
Name
PathName
ProcessId
ServiceType
Started
StartMode
StartName
State
WaitHint
Строка, задающая действие программы загрузки, которое будет
выполнено в случае возникновения сбоя при запуске службы во время
загрузки операционной системы: Ignore — пользователю не будет
выведено никаких сообщений о сбое, Normal — будет выведено
сообщение о сбое при запуске службы, Critical — система попытается
автоматически произвести перезагрузку в хорошей конфигурации,
Unknown — действие для подобного типа ошибок не определено
Имя службы
Полный путь к бинарному файлу, соответствующему службе
Уникальный идентификатор службы
Строка, описывающая тип службы: Kernel Driver, File System Driver,
Adapter, Recognizer Driver, Own Process, Share Process, Interactive Process
Свойство логического типа, значение которого равно True, если служба
была запущена, и равно False в противном случае
Строка, описывающая способ загрузки службы: Boot (применяется
только при загрузке служб для драйверов), System (применяется только
при загрузке служб для драйверов), Auto (служба загружается
автоматически), Manual (служба может быть запущена вручную),
Disabled (службу запустить нельзя)
Учетная запись, от имени которой запускается служба
Текущее состояние службы: Stopped (остановлена), Start Pending
(стартует), Stop Pending (останавливается), Running (запущена), Continue
Pending (возвращается в активное состояние), Pause Pending
(приостанавливается), Paused (приостановлена), Unknown (состояние
службы определить не удалось)
Примерное время (в миллисекундах), необходимое для выполнения
операций приостановки, остановки или запуска службы
Таблица 3. Методы класса Win32_Service
Метод
StartService()
StopService()
PauseService()
ResumeService()
UserControlService(n)
Описание
Запускает службу
Остановливает службу
Приостановливает службу
Возобновляет работу службы
Посылает
службе
заданный
пользователем код n (число от 128 до
255)
Create(Name, DisplayName, PathName, ServiceType, Создает службу
ErrorControl, StartMode, DesktopInteract, StartName,
StartPassword,
LoadOrderGroup,
LoadOrderGroupDependencies, ServiceDependencies)
Change(DisplayName,
PathName,
ServiceType, Изменяет параметры службы
ErrorControl, StartMode, DesktopInteract, StartName,
StartPassword,
LoadOrderGroup,
LoadOrderGroupDependencies, ServiceDependencies)
ChangeStartMode(StartMode)
Изменяет тип загрузки службы.
Символьный параметр StartMode
может
принимать
следующие
значения: Boot (применяется только
при загрузке служб для драйверов),
System (применяется только при
загрузке служб для драйверов), Auto
Delete()
(служба загружается автоматически),
Manual
(служба
может
быть
запущена вручную), Disabled (службу
запустить нельзя)
Удаляет существующую службу
Рассмотрим теперь класс Win32_Process, экземпляры которого соответствуют
запущенным в операционной системе процессам. Напомним, что информацию о всех
процессах можно получить с помощью Диспетчера задач (Task Manager), запускаемого
нажатием клавиш <Ctrl>+<Alt>+<Del> .
Количество выводимых на экран параметров для процессов зависит от настроек
Диспетчера задач (Task Manager): выбрав в меню Вид (View) пункт Выбрать столбцы
(Choose columns), можно отметить интересующие нас параметры.
Параметрам запущенного процесса соответствуют свойства класса Win32_Process.
Таблица 4. Некоторые свойства класса Win32_Process
Свойство
Описание
Caption
Короткое текстовое описание процесса
CommandLine
Командная строка, используемая для запуска процесса
CreationDate
Время начала выполнения процесса
Description
Полное описание процесса
ExecutablePath
Полный путь к исполняемому файлу процесса
HandleCount
Общее количество дескрипторов, открытых в настоящее
время процессом (равно общему количеству дескрипторов,
открытых каждым потоком в процессе)
MaximumWorkingSetSize Максимально возможный размер рабочего набора процесса
(рабочий набор процесса — это набор страниц, доступных
процессу в физической оперативной памяти)
MinimumWorkingSetSize Минимально возможный размер рабочего набора процесса
Name
Имя процесса
OtherOperationCount
Число выполненных операций ввода/вывода, отличных от
операции чтения или записи
OtherTransferCount
Размер данных, переданных в процессе выполнения операций,
отличных от операции чтения или записи
PageFileUsage
Размер части файла подкачки, которая используется
процессом в настоящее время
ParentProcessID
Уникальный
идентификатор
родительского
процесса,
создавшего данный процесс
PeakPageFileUsage
Максимальный размер части файла подкачки, которая
использовалась процессом за все время его работы
PeakVirtualSize
Максимальное значение размера виртуального адресного
пространства,
которое
использовалось
процессом
единовременно
PeakWorkingSetSize
Максимальное значение размера рабочего набора процесса за
все время работы
Priority
Приоритет
процесса
(минимальному
приоритету
соответствует значение 0, максимальному — 31)
ProcessID
Уникальный идентификатор процесса. Значение этого
свойства актуально с момента создания процесса до
окончания его работы
Число выполненных процессом операций чтения
Размер прочитанных данных
Число активных потоков в процессе
Текущий размер виртуального адресного пространства в
байтах, используемого процессом
WorkingSetSize
Размер памяти в байтах, необходимый для успешного
выполнения процесса в операционной системе, использующей
страничную организацию памяти
WriteOperationCount
Число выполненных процессом операций записи
WriteTransferCount
Размер записанных данных
Таблица 5. Методы класса Win32_Process
Метод
Описание
AttachDebugger()
Запускает отладчик, установленный в
системе по умолчанию, для отладки
процесса
Create(CommandLine,
CurrentDirectory, Создает новый не интерактивный процесс
ProcessStartupInformation, ProcessId)
GetOwner(User,Domain)
После выполнения этого метода в
переменной User будет записано имя
пользователя,
создавшего
процесс
(владельца процесса), а в переменной
Domain — имя домена, в котором запущен
этот процесс
GetOwnerSid(Sid)
Позволяет получить в переменной Sid
идентификатор
безопасности
(Security
IDentifier, SID) владельца процесса
SetPriority(Priority)
Устанавливает
приоритет
процесса.
Числовой параметр Priority определяет
требуемый приоритет и может принимать
следующие значения: 64 (низкий), 16 384
(ниже среднего), 32 (средний), 32 768 (выше
среднего), 128 (высокий), 256 (процесс
выполняется в реальном времени)
Terminate(Reason)
Завершает процесс и все его потоки.
Числовой параметр Reason задает код
выхода,
который
будет
сообщен
операционной системе после завершения
процесса
ReadOperationCount
ReadTransferCount
ThreadCount
VirtualSize
Таким образом, методы класса Win32_Process позволяют выполнять над
процессами те же действия, которые можно осуществить в Диспетчере задач Windows с
помощью контекстного меню и кнопки Завершить процесс (Terminate process)
1.4 Соединение с подсистемой 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
1.5 Язык запросов 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
Задания для выполнения
2
1. Выполните одно
преподаватель).
Вари
ант
1
2
3
из
заданий,
приведенных
в
таблице
(вариант
задает
Задание
Создайте сценарий WMI, выполняющий запись в файл сведений о службах
(Уникальный идентификатор службы, Полное описание службы, Тип службы)
ОС, которые могут быть приостановлены.
Создайте сценарий WMI, формирующий список процессов, приоритет которых
меньше 8. Вывести свойства процессов: Короткое текстовое описание процесса,
Командная строка, используемая для запуска процесса, Максимально
возможный размер рабочего набора процесса, Минимально возможный размер
рабочего набора процесса.
Создайте сценарий WMI, выполняющий запись в файл сведений о службах ОС
(Учетная запись, от имени которой запускается служба, Полное описание
службы, Тип службы), которые не взаимодействуют с рабочим столом
пользователей
Создайте сценарий WMI, формирующий список процессов, приоритет которых
от 9 до 12. Вывести свойства процессов: Имя процесса, Размер части файла
подкачки, которая используется процессом в настоящее время, Уникальный
идентификатор родительского процесса, создавшего данный процесс.
Создайте сценарий WMI, выполняющий запись в файл сведений о службах ОС,
(Уникальный идентификатор службы, Краткое описание службы, Полный путь
к бинарному файлу, соответствующему службе), которые являются
интерактивными процессами
Создайте сценарий WMI, формирующий список процессов, приоритет которых
больше 8. Вывести свойства процессов: Уникальный идентификатор процесса,
Максимальное значение размера рабочего набора процесса за все время работы,
Число активных потоков в процессе
4
5
6
7
8
9
10
Создайте сценарий WMI, выполняющий запись в файл сведений о службах ОС,
имеющих тип Kernel Driver (Уникальный идентификатор службы, Имя службы,
способ загрузки службы).
Создайте сценарий WMI, формирующий список процессов, приоритет которых
равен 8. Вывести свойства процессов: Короткое текстовое описание процесса ,
Полное описание процесса, Общее количество дескрипторов, открытых в
настоящее время процессом.
Создайте сценарий WMI , выполняющий запись в файл сведений о службах ОС,
которые взаимодействуют с рабочим столом пользователей.
Создайте сценарий WMI, формирующий список процессов, приоритет которых
больше 12. Вывести свойства процессов: Полный путь к исполняемому файлу
процесса, Максимально возможный размер рабочего набора процесса,
Минимально возможный размер рабочего набора процесса.
Создайте сценарий WMI, выполняющий запись в файл сведений о службах ОС,
которые загружаются автоматически (Способ загрузки службы, Уникальный
идентификатор службы, Имя службы).
Создайте сценарий WMI, формирующий список процессов, приоритет которых
меньше 8. Вывести свойства процессов: Имя процесса, Размер записанных
данных, Текущий размер виртуального адресного пространства в байтах,
используемого процессом
Создайте сценарий, выполняющий запись в файл сведений (Полное описание
службы, Полный путь к бинарному файлу, Уникальный идентификатор службы)
соответствующему службе о службах ОС, которые загружаются автоматически.
Создайте сценарий WMI, формирующий список процессов, приоритет которых
меньше 12. Вывести свойства процессов: Имя процесса, Размер записанных
данных, Текущий размер виртуального адресного пространства в байтах,
используемого процессом
Создайте сценарий WMI, выполняющий запись в файл сведений (Полное
описание службы, Уникальный идентификатор службы, Текущее состояние
службы) соответствующему службе о службах ОС, которые могут быть
запущены вручную.
Создайте сценарий WMI, формирующий список процессов, приоритет которых
равен 8. Вывести свойства процессов: Уникальный идентификатор процесса,
Текущий размер виртуального адресного пространства в байтах, используемого
процессом, Число активных потоков в процессе.
Создайте сценарий WMI, выполняющий запись в файл сведений о службах ОС,
имеющих тип Share Process (Уникальный идентификатор службы, Имя службы,
способ загрузки службы).
Создайте сценарий WMI, формирующий список процессов, приоритет которых
меньше 8. Вывести свойства процессов: Короткое текстовое описание процесса,
Максимальное значение размера виртуального адресного пространства, которое
использовалось процессом единовременно, Максимальное значение размера
рабочего набора процесса за все время работы.
Создайте сценарий WMI, выполняющий запись в файл сведений о службах ОС,
которые имеют тип File System Driver (способ загрузки службы, уникальный
идентификатор службы, Имя службы).
Создайте сценарий WMI, формирующий список процессов, приоритет которых
больше 8. Вывести свойства процессов: Имя процесса, Уникальный
идентификатор процесса, Уникальный идентификатор родительского процесса,
создавшего данный процесс.
3
Контрольные вопросы.
1 Из чего состоят процесс и поток в среде Windows?
2 Что такое планирование потоков?
3 Какие классы приоритетов применяются в ОС Windows?
4 В чем отличие базового и текущего приоритетов?
5 Из каких компонентов состоит WMI.
6 В каком режиме работы процессора выполняются сервисы ОС Windows?
7 Как процессы используют файл подкачки?
Download