Objeto SWbemServices

Puede usar los métodos de un objeto SWbemServices para realizar operaciones en un espacio de nombres en un host local o un host remoto. Este objeto no se puede crear mediante la llamada CreateObject de VBScript.

Miembros

El objeto SWbemServices contiene estos tipos de miembros:

Métodos

El objeto SWbemServices contiene estos métodos.

Método Descripción
AssociatorsOf Recupera las instancias de los recursos administrados asociados a un recurso especificado mediante una o varias clases de asociación. Proporcione la ruta de acceso del objeto para el punto de conexión de origen y AssociatorsOf devolverá los recursos administrados en el punto de conexión opuesto. El método AssociatorsOf realiza la misma función que la consulta WQL "ASSOCIATORS OF".
AssociatorsOfAsync Devuelve de forma asincrónica una colección de objetos (clases o instancias) que están asociados a un objeto especificado.
Eliminar Elimina una instancia de un recurso administrado (o una definición de clase del repositorio CIM).
DeleteAsync Elimina de forma asincrónica la clase o instancia especificada en la ruta de acceso del objeto.
ExecMethod Proporciona una manera alternativa de ejecutar un método definido por una definición de clase de un recurso administrado. Se usa principalmente en situaciones en las que el lenguaje de scripting no admite parámetros out. Por ejemplo, JScript no admite parámetros out.
ExecMethodAsync Ejecuta de forma asincrónica un método exportado por un proveedor de métodos.
ExecNotificationQuery Ejecuta una consulta de suscripción de eventos para recibir eventos. Una consulta de suscripción de eventos es una consulta que define un cambio en el entorno administrado que desea supervisar. Cuando se produce el cambio, la infraestructura de WMI entrega un evento que describe el cambio al script de llamada.
ExecNotificationQueryAsync Ejecuta de manera asincrónica una consulta para recibir eventos.
ExecQuery Ejecuta una consulta para recuperar una colección de instancias de recursos administrados por WMI (o definiciones de clase). ExecQuery se puede utilizar para recuperar una colección filtrada de instancias que coinciden con los criterios definidos en la consulta que se pasó a ExecQuery.
ExecQueryAsync Ejecuta de manera asincrónica una consulta para recuperar objetos.
Get Recupera una única instancia de un recurso administrado (o definición de clase) en función de una ruta de acceso de objeto.
GetAsync De forma asincrónica, recupera un objeto que es una definición de clase o una instancia, en función de la ruta de acceso del objeto.
InstancesOf Recupera todas las instancias de un recurso administrado en función de un nombre de clase. De forma predeterminada, InstancesOf realiza una recuperación profunda. Es decir, InstancesOf recupera las instancias del recurso identificado por el nombre de clase que se pasó al método y recupera también todas las instancias de todos los recursos que son subclases (que están definidas por debajo) de la clase de destino.
InstancesOfAsync Devuelve de forma asincrónica las instancias de una clase especificada según los criterios de selección especificados por el usuario.
ReferencesTo Devuelve todas las asociaciones que hacen referencia a un recurso especificado. La mejor manera de entender ReferencesTo es compararla con el método AssociatorsOf. AssociatorsOf devuelve los recursos dinámicos que están en el extremo opuesto de una asociación. ReferencesTo devuelve la propia asociación. El método ReferencesTo realiza la misma función que realiza la consulta WQL "REFERENCES OF".
ReferencesToAsync Devuelve de forma asincrónica una colección de todas las clases de asociación o instancias que hacen referencia a una clase o instancia específica.
SubclassesOf Recupera todas las subclases de una clase especificada del repositorio CIM.
SubclassesOfAsync Devuelve de forma asincrónica una colección de subclases para una clase especificada.

Propiedades

El objeto SWbemServices contiene estas propiedades.

Propiedad Tipo de acceso Descripción
Security_
Solo lectura
Se usa para obtener o establecer la configuración de seguridad de un objeto SWbemServices.

Comentarios

Se puede llamar a los métodos en el modo sincrónico, asincrónico o semisincrónico. Para más información, consulte Llamada a un método.

Introducción

SWbemServices ofrece dos roles principales. En primer lugar, el objeto SWbemServices representa una conexión autenticada a un espacio de nombres WMI en un equipo de destino. En segundo lugar, SWbemServices es el objeto Automation que se usa para recuperar recursos administrados por WMI. Puede obtener una referencia a un objeto SWbemServices de dos maneras:

  • Como se ha demostrado en la mayoría de los scripts WMI presentados hasta ahora, puede utilizar la función VBScript GetObject en combinación con el moniker de WMI "winmgmts:". El ejemplo siguiente es la forma más sencilla de una conexión WMI. El ejemplo se conecta al espacio de nombres predeterminado (normalmente "Root\CIMv2") en la máquina local:

    Set objSWbemServices = GetObject("winmgmts:")

  • También puede usar el método ConnectServer del objeto SWbemLocator para obtener una referencia a un objeto SWbemServices.

Después de obtener una referencia a un objeto SWbemServices, use la referencia de objeto para llamar a 1 de 18 métodos disponibles mediante SWbemServices. SWbemServices puede devolver uno de los tres objetos de biblioteca de scripting de WMI diferentes (SWbemObjectSet, SWbemObject o SWbemEventSource), según el método al que llame. Conocer el tipo de objeto que devuelve cada método le ayudará a determinar el siguiente paso que debe realizar el script. Por ejemplo, si devuelve un objeto SWbemObjectSet, debe enumerar la colección para acceder a cada objeto SWbemObject de la colección. Si vuelve a obtener un objeto SWbemObject, puede acceder inmediatamente a los métodos y propiedades del objeto sin enumerar primero la colección.

Modos de operación

SWbemServices admite tres modos de operación: sincrónico, asincrónico y semisincrónico.

  • Synchronous. En modo sincrónico, el script se bloquea (pausa) hasta que se completa el método SWbemServices. No solo espera el script, sino que en los casos en los que WMI recupera instancias de recursos administrados, WMI crea el SWbemObjectSet completo en memoria antes de devolver el primer byte de datos al script de llamada. Esto puede tener un efecto adverso en el rendimiento del script y en el equipo que lo ejecuta. Por ejemplo, recuperar de forma sincrónica miles de eventos de los registros de eventos de Windows puede tardar mucho tiempo y usar una gran cantidad de memoria. Por estas razones, las operaciones sincrónicas no se recomiendan excepto para los tres métodos (Delete, ExecMethod y Get) que son sincrónicos de forma predeterminada. Estos métodos no devuelven grandes conjuntos de datos, por lo que no se requiere una operación semisincrónica.

  • Asincrónica En modo asincrónico, el script llama a uno de los nueve métodos asincrónicos y efectúa la devolución inmediatamente. Es decir, en cuanto se llama al método asincrónico, el script reanuda la ejecución de la siguiente línea de código. Para usar un método asincrónico, el script primero debe crear un objeto SWbemSink y una subrutina especial denominada controlador de eventos. WMI realiza la operación asincrónica y notifica al script llamando a la subrutina del controlador de eventos cuando se completa la operación.

  • Semisincrónico. El modo semisincrónico es una combinación entre los modos sincrónico y asincrónico. Las operaciones semisincrónicas ofrecen un mejor rendimiento que las operaciones sincrónicas y no requieren el nivel extra de conocimiento y scripting necesario para controlar las operaciones asincrónicas. Este es el tipo de operación predeterminado para la mayoría de las consultas WMI.

    En el modo semisincrónico, el script llama a uno de los seis métodos de recuperación de datos y efectúa la devolución inmediatamente. WMI recupera los recursos administrados en segundo plano a medida que el script continúa ejecutándose. A medida que se recuperan los recursos, se devuelven inmediatamente al script mediante un SWbemObjectSet. Puede empezar a acceder a los recursos administrados sin esperar a que se reúna toda la colección.

    Hay una advertencia para las operaciones semisincrónicas cuando se trabaja con recursos administrados que tienen muchas instancias (más de 1000), como CIM_DataFile y Win32_NTLogEvent. La advertencia es el resultado de cómo WMI controla las instancias de recursos administrados. Para cada instancia de un recurso administrado, WMI crea y almacena en caché un objeto SWbemObject. Cuando existe un gran número de instancias para un recurso administrado, la recuperación de instancias puede monopolizar los recursos disponibles, lo que reduce el rendimiento del script y del equipo.

    Para solucionar el problema, puede optimizar las llamadas a métodos semisincrónicos mediante la marca wbemFlagForwardOnly. La marca wbemFlagForwardOnly, combinada con la marca wbemFlagReturnImmediately (la marca semisincrónica predeterminada), indica a WMI que devuelva un SWbemObjectSet de solo avance, lo que elimina el problema de rendimiento de conjuntos de datos grandes. Sin embargo, el uso de la marca wbemFlagForwardOnly conlleva un costo. Un objeto SWbemObjectSet de solo avance solo se puede enumerar una vez. Después de acceder a cada SWbemObject de un SWbemObjectSet de solo avance, se libera la memoria asignada a la instancia.

A excepción de los métodos Delete, ExecMethod, Get y nueve métodos asincrónicos, el modo de funcionamiento semisincrónico es el predeterminado y el recomendado.

Métodos usados habitualmente

Los métodos que se usan con más frecuencia en los scripts de administración del sistema son InstancesOf, ExecQuery, Get y ExecNotificationQuery. Aunque se usa a menudo, InstancesOf no es necesariamente la manera recomendada de recuperar información (aunque posiblemente sea la manera más fácil).

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista
Servidor mínimo compatible
Windows Server 2008
Encabezado
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
Archivo DLL
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

Consulte también

Objetos de API de scripting

Llamada a un método