Объект SWbemServices

Методы объекта SWbemServices можно использовать для выполнения операций с пространством имен на локальном или удаленном узле. Этот объект не может быть создан вызовом CreateObject VBScript.

Элементы

Объект SWbemServices имеет следующие типы элементов:

Методы

Объект SWbemServices содержит следующие методы.

Метод Описание
АссоциаторыOf Извлекает экземпляры управляемых ресурсов, связанных с указанным ресурсом, с помощью одного или нескольких классов ассоциаций. Вы указываете путь к объекту для исходной конечной точки, а AssociatorsOf возвращает управляемые ресурсы в противоположной конечной точке. Метод AssociatorsOf выполняет ту же функцию, что и WQL-запрос ASSOCIATORS OF.
AssociatorsOfAsync Асинхронно возвращает коллекцию объектов (классов или экземпляров), связанных с указанным объектом.
Удалить Удаляет экземпляр управляемого ресурса (или определение класса из репозитория CIM).
DeleteAsync Асинхронно удаляет класс или экземпляр, указанный в пути к объекту.
ExecMethod Предоставляет альтернативный способ выполнения метода, определенного определением управляемого класса ресурсов. В основном используется в ситуациях, когда язык сценариев не поддерживает параметры out. Например, JScript не поддерживает параметры out.
ExecMethodAsync Асинхронно выполняет метод, экспортируемый поставщиком метода.
ExecNotificationQuery Выполняет запрос подписки на события для получения событий. Запрос на подписку на события — это запрос, определяющий изменение в управляемой среде, которую вы хотите отслеживать. При изменении инфраструктура WMI доставляет событие, описывающее изменение, в вызывающий скрипт.
ExecNotificationQueryAsync Асинхронно выполняет запрос для получения событий.
ExecQuery Выполняет запрос для получения коллекции экземпляров ресурсов, управляемых WMI (или определений классов). ExecQuery можно использовать для получения отфильтрованной коллекции экземпляров, которые соответствуют критериям, заданным в запросе, переданном в ExecQuery.
ExecQueryAsync Асинхронно выполняет запрос для получения объектов.
Получить Извлекает один экземпляр управляемого ресурса (или определения класса) на основе пути к объекту.
Getasync Асинхронно извлекает объект , который является определением класса или экземпляром, на основе пути к объекту.
InstancesOf Извлекает все экземпляры управляемого ресурса на основе имени класса. По умолчанию InstancesOf выполняет глубокое извлечение. То есть InstancesOf получает экземпляры ресурса, определяемого именем класса, переданным методу, а также все экземпляры всех ресурсов, которые являются подклассами (определенными ниже) целевого класса.
InstancesOfAsync Асинхронно возвращает экземпляры указанного класса в соответствии с заданными пользователем критериями выбора.
ReferencesTo Возвращает все связи, ссылающиеся на указанный ресурс. Лучший способ понять ReferencesTo — сравнить его с методом AssociatorsOf . AssociatorsOf возвращает динамические ресурсы, которые находятся на противоположном конце ассоциации. ReferencesTo возвращает саму связь. Метод ReferencesTo выполняет ту же функцию, что и WQL-запрос REFERENCES OF.
ReferencesToAsync Асинхронно возвращает коллекцию всех классов или экземпляров ассоциаций, ссылающихся на определенный класс или экземпляр.
ПодклассыOf Извлекает все подклассы указанного класса из репозитория CIM.
ПодклассыOfAsync Асинхронно возвращает коллекцию подклассов для указанного класса.

Свойства

Объект SWbemServices имеет эти свойства.

Свойство Тип доступа Описание
Безопасности_
Только для чтения
Используется для получения или задания параметров безопасности для объекта SWbemServices .

Комментарии

Методы можно вызывать либо в синхронном режиме, либо в асинхронном режиме, либо в полусинхронном режиме. Дополнительные сведения см. в разделе Вызов метода .

Обзор

SWbemServices выполняет две основные роли. Во-первых, объект SWbemServices представляет прошедшее проверку подлинности подключение к пространству имен WMI на целевом компьютере. Во-вторых, SWbemServices — это объект автоматизации, используемый для получения ресурсов, управляемых WMI. Ссылку на объект SWbemServices можно получить двумя способами:

  • Как показано в большинстве скриптов WMI, представленных на данный момент, можно использовать функцию GetObject VBScript в сочетании с моникером WMI "winmgmts:". В следующем примере показана простейшая форма WMI-подключения. В примере выполняется подключение к пространству имен по умолчанию (обычно "Root\CIMv2") на локальном компьютере:

    Set objSWbemServices = GetObject("winmgmts:")

  • Вы также можете использовать метод ConnectServer объекта SWbemLocator, чтобы получить ссылку на объект SWbemServices.

После получения ссылки на объект SWbemServices используйте ссылку на объект для вызова 1 из 18 методов, доступных с помощью SWbemServices. SWbemServices может возвращать один из трех разных объектов библиотеки сценариев WMI (SWbemObjectSet, SWbemObject или SWbemEventSource) в зависимости от вызываемого метода. Зная тип объекта, возвращаемый каждым методом, вы сможете определить следующий шаг, который должен выполнить скрипт. Например, если вы возвращаете SWbemObjectSet, необходимо перечислить коллекцию для доступа к каждому объекту SWbemObject в коллекции. Если вы вернетесь к объекту SWbemObject, вы можете сразу же получить доступ к методам и свойствам объекта без перечисления коллекции.

Режимы работы

SWbemServices поддерживает три режима работы: синхронный, асинхронный и полусинхронный.

  • Синхронный. В синхронном режиме скрипт блокируется (приостанавливается) до завершения метода SWbemServices . Скрипт не только ожидает, но и в тех случаях, когда WMI получает экземпляры управляемых ресурсов, WMI создает весь SWbemObjectSet в памяти, прежде чем первый байт данных будет возвращен вызывающому скрипту. Это может отрицательно сказаться на производительности скрипта и на компьютере, на котором выполняется скрипт. Например, синхронное извлечение тысяч событий из журналов событий Windows может занять много времени и использовать много памяти. По этим причинам синхронные операции не рекомендуются, за исключением трех методов (Delete, ExecMethod и Get), которые по умолчанию являются синхронными. Эти методы не возвращают большие наборы данных, поэтому полусинхронная операция не требуется.

  • Асинхронная. В асинхронном режиме скрипт вызывает один из девяти асинхронных методов и возвращает немедленно. То есть, как только вызывается асинхронный метод, скрипт возобновляет выполнение следующей строки кода. Чтобы использовать асинхронный метод, скрипт должен сначала создать объект SWbemSink и специальную подпрограмму, называемую обработчиком событий. WMI выполняет асинхронную операцию и уведомляет скрипт, вызывая подпрограмму обработчика событий по завершении операции.

  • Полусинхронный. Полусинхронный режим — это компромисс между синхронным и асинхронным. Полусинхронные операции обеспечивают более высокую производительность, чем синхронные, но не требуют дополнительных знаний и выполнения сценариев, необходимых для обработки асинхронных операций. Это тип операции по умолчанию для большинства запросов WMI.

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

    При работе с управляемыми ресурсами с большим количеством экземпляров (многие из которых больше 1000), такими как CIM_DataFile и Win32_NTLogEvent, необходимо предостережение к полусинхронным операциям. Это связано с тем, как WMI обрабатывает экземпляры управляемых ресурсов. Для каждого экземпляра управляемого ресурса WMI создает и кэширует объект SWbemObject . Если для управляемого ресурса существует большое количество экземпляров, извлечение экземпляров может монополизировать доступные ресурсы, снижая производительность скрипта и компьютера.

    Чтобы обойти эту проблему, можно оптимизировать вызовы полусинхронных методов с помощью флага wbemFlagForwardOnly . Флаг wbemFlagForwardOnly в сочетании с флагом wbemFlagReturnImmediately (полусинхронный флаг по умолчанию) предписывает WMI возвращать SWbemObjectSet только вперед, что устраняет проблему с производительностью большого набора данных. Однако использование флага wbemFlagForwardOnly связано с затратами. SWbemObjectSet можно перечислить только один раз. После доступа к каждому объекту SWbemObject в SWbemObjectSet , выделенной экземпляру, освобождается память, выделенная экземпляру.

За исключением методов Delete, ExecMethod, Get и девяти асинхронных методов, по умолчанию и рекомендуемым режимом работы является полусинхронный.

Часто используемые методы

В скриптах администрирования системы чаще всего используются методы InstancesOf, ExecQuery, Get и ExecNotificationQuery. Хотя это часто и используется, instancesOf не обязательно является рекомендуемым способом получения информации (хотя это, возможно, самый простой способ).

Требования

Требование Значение
Минимальная версия клиента
Windows Vista
Минимальная версия сервера
Windows Server 2008
Заголовок
Wbemdisp.h
Библиотека типов
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

См. также раздел

Создание скриптов для объектов API

Вызов метода