Объект 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 |
Заголовок |
|
Библиотека типов |
|
DLL |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |