Объект SWbemServices

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

Элементы

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

Методы

Объект SWbemServices имеет эти методы.

Метод Описание
АссоциаторыOf Извлекает экземпляры управляемых ресурсов, связанных с указанным ресурсом, с помощью одного или нескольких классов ассоциаций. Вы предоставляете путь к объекту для исходной конечной точки, а AssociatorsOf возвращает управляемые ресурсы в противоположной конечной точке. Метод AssociatorsOf выполняет ту же функцию, что и WQL-запрос ASSOCIATORS OF.
AssociatorsOfAsync Асинхронно возвращает коллекцию объектов (классов или экземпляров), связанных с указанным объектом.
DELETE Удаляет экземпляр управляемого ресурса (или определение класса из репозитория CIM).
DeleteAsync Асинхронно удаляет класс или экземпляр, указанный в пути к объекту.
ExecMethod Предоставляет альтернативный способ выполнения метода, определенного определением управляемого класса ресурсов. В основном используется в ситуациях, когда язык сценариев не поддерживает параметры. Например, JScript не поддерживает параметры.
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 имеет эти свойства.

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

Комментарии

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

Обзор

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

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

    Set objSWbemServices = GetObject("winmgmts:")

  • Для получения ссылки на объект SWbemServices также можно использовать метод SWbemLocatorConnectServer.

Получив ссылку на объект 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
Header
Wbemdisp.h
Библиотека типов
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

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

Скрипты объектов API

Вызов метода