Лабораторная работа №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 Как процессы используют файл подкачки?