Método SWbemServices.InstancesOf

El método InstancesOf del objeto SWbemServices crea un enumerador que devuelve las instancias de una clase especificada según los criterios de selección especificados por el usuario. Este método implementa una consulta sencilla. Las consultas más complejas pueden requerir el uso de SWbemServices.ExecQuery.

Se llama al método en el modo semisincrónico. Para obtener más información, consulte Llamada a un método.

Para obtener una explicación de esta sintaxis, vea Convenciones de documentación para la API de scripting.

Sintaxis

objWbemObjectSet = .InstancesOf( _
  ByVal strClass, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ] _
)

Parámetros

strClass

Necesario. Cadena que contiene el nombre de la clase para la que se desean instancias. Este parámetro no puede estar en blanco.

iFlags [opcional]

Este parámetro determina cómo se enumera la llamada detallada y si esta llamada vuelve inmediatamente. El valor predeterminado de este parámetro es wbemFlagReturnImmediately. Este parámetro puede aceptar los valores siguientes.

wbemFlagForwardOnly (32 (0x20))

Provoca la devolución de un enumerador de solo avance. Los enumeradores de solo avance suelen ser mucho más rápidos y usan menos memoria que los enumeradores convencionales, pero no permiten llamadas a SWbemObject.Clone_.

wbemFlagBidirectional (0 (0x0))

Hace que WMI conserve los punteros a objetos de la enumeración hasta que el cliente libere el enumerador.

wbemFlagReturnImmediately (16 (0x10))

Valor predeterminado para este parámetro. Esta marca hace que la llamada se devuelva inmediatamente.

wbemFlagReturnWhenComplete (0 (0x0))

Hace que esta llamada se bloquee hasta que se haya completado la consulta. Esta marca llama al método en el modo sincrónico.

wbemQueryFlagShallow (1 (0x1))

Obliga a la enumeración a incluir solo subclases inmediatas de la clase principal especificada.

wbemQueryFlagDeep (0 (0x0))

Valor predeterminado para este parámetro. Este valor obliga a la enumeración a incluir todas las clases de la jerarquía.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Hace que WMI devuelva datos de modificación de clase con la definición de clase base. Para más información, vea Localización de información de clases WMI.

objWbemNamedValueSet [opcional]

Normalmente, esto no está definido. De lo contrario, se trata de un objeto SWbemNamedValueSet cuyos elementos representan la información de contexto que puede usar el proveedor que atiende la solicitud. Un proveedor que admita o necesite esa información debe documentar los nombres de valor reconocidos, el tipo de datos del valor, los valores permitidos y la semántica.

Valor devuelto

Si se ejecuta correctamente, el método devuelve SWbemObjectSet.

Códigos de error

Después de completar el método InstancesOf, el objeto Err puede contener uno de los códigos de error de la lista siguiente.

Nota:

Un enumerador devuelto con cero elementos no es un error.

wbemErrAccessDenied - 2147749891 (0x80041003)

El usuario actual no tiene permiso para ver las instancias de la clase especificada.

wbemErrFailed: 2147749889 (0x80041001)

Error no especificado.

wbemErrInvalidClass: 2147749904 (0x80041010)

La clase especificada no es válida.

wbemErrInvalidParameter: 2147749896 (0x80041008)

Un parámetro especificado no es válido.

wbemErrOutOfMemory: 2147749894 (0x80041006)

No hay suficiente memoria para completar la operación.

Comentarios

El método InstancesOf solo funciona para objetos de clase.

De forma predeterminada, InstancesOf realiza una recuperación profunda. Es decir, InstancesOf recupera todas las instancias del recurso administrado que identifica y todas las instancias de todas las subclases definidas debajo de la clase de destino. Por ejemplo, el siguiente script recupera todos los recursos modelados por todas las clases dinámicas definidas debajo de la clase abstracta CIM_Service.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("CIM_Service")
For Each objSWbemObject In colSWbemObjectSet
    Wscript.Echo "Object Path: " & objSWbemObject.Path_.Path
Next

Si ejecuta este script, obtendrá información. Sin embargo, esta información no se limitará a los servicios instalados en un equipo. En su lugar, incluirá información de todas las clases secundarias de CIM_Service, incluidos Win32_SystemDriver y Win32_ApplicationService.

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

SWbemServices

SWbemObjectSet