Méthode SWbemObject.ExecMethod

La méthode ExecMethod\_ de l'objet SWbemObject exécute une méthode exportée par un fournisseur de méthodes.

Cette méthode s’interrompt pendant que la méthode qui est transférée au fournisseur approprié s’exécute. Les informations et les status sont ensuite retournées. C'est le fournisseur, et non WMI, qui implémente la méthode.

Pour obtenir une explication de cette syntaxe, consultez Conventions de document pour l’API de script.

Syntaxe

objOutParams = .ExecMethod_( _
  ByVal strMethodName, _
  [ ByVal objwbemInParams ], _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ] _
)

Paramètres

strMethodName [in]

Obligatoire. Nom de la méthode pour l'objet.

objwbemInParams [in, facultatif]

Il s’agit d’un objet SWbemObject qui contient les paramètres d’entrée de la méthode en cours d’exécution. Par défaut, ce paramètre a la valeur. Pour plus d'informations, voir Construction des objets InParameters et Analyse des objets OutParameters.

iFlags [in, facultatif]

Réservé et doit être défini sur 0 (zéro) si spécifié.

objwbemNamedValueSet [in, facultatif]

En règle générale, il n’est pas défini. Sinon, il s’agit d’un objet SWbemNamedValueSet dont les éléments représentent les informations de contexte qui peuvent être utilisées par le fournisseur répondant à la demande. Un fournisseur qui prend en charge ou requiert de telles informations doit documenter les noms de valeur reconnus, le type de données de la valeur, les valeurs autorisées et la sémantique.

Valeur retournée

Si cette méthode réussit, un objet SWbemObject retourne. L’objet retourné contient les paramètres de sortie et la valeur de retour de la méthode en cours d’exécution.

Codes d’erreur

Une fois la méthode PutAsync terminée, l’objet Err peut contenir l’un des codes d’erreur de la liste suivante.

wbemErrFailed - 2147749889 (0x80041001)

Erreur non spécifiée.

wbemErrInvalidClass - 2147749904 (0x80041010)

La classe spécifiée n'est pas valide.

wbemErrInvalidParameter - 2147749896 (0x80041008)

Un paramètre spécifié n’est pas valide.

wbemErrOutOfMemory - 2147749894 (0x80041006)

La mémoire disponible est insuffisante pour terminer cette opération.

wbemErrInvalidMethod - 2147749934 (0x8004102E)

La méthode demandée n’était pas disponible.

wbemErrAccessDenied - 2147749891 (0x80041003)

L’utilisateur actuel n’était pas autorisé à exécuter la méthode.

Notes

Cette méthode est similaire à SWbemServices.ExecMethod, mais elle fonctionne directement sur l’objet dont la méthode doit être exécutée. Par exemple, l’exemple de code suivant appelle la méthode du fournisseur StartService dans Win32_Service et utilise l’accès direct.

oService = GetObject("winmgmts:Win32_Service=Alerter")
iStatus = oService.StartService()

Cette version appelle SWbemObject.ExecMethod_ pour exécuter la méthode StartService .

oService = GetObject("winmgmts:Win32_Service=Alerter")
Set outParam = process.ExecMethod_("StartService")

Utilisez SWbemObject.ExecMethod_ comme alternative à l’accès direct pour l’exécution d’une méthode de fournisseur dans les cas où il n’est pas possible d’exécuter une méthode directement. Par exemple, vous utiliserez SWbemObject.ExecMethod_ avec un langage de script qui ne prend pas en charge les paramètres de sortie si votre méthode a des paramètres sortants. Sinon, le moyen recommandé d’appeler une méthode consiste à utiliser l’accès direct.

  • La méthode SWbemObject.ExecMethod_ suppose que l’objet représenté par SWbemObject contient la méthode à exécuter. En revanche, SWbemServices.ExecMethod nécessite un chemin d’objet. Utilisez SWbemObject.ExecMethod_ si vous avez déjà obtenu l’objet dont vous souhaitez exécuter la méthode.

Exemples

L’exemple suivant montre la méthode ExecMethod . Le script crée un objet Win32_Process représentant un processus exécutant le Bloc-notes. Pour plus d’informations sur un script illustrant les mêmes opérations effectuées de manière asynchrone, consultez SWbemObject.ExecMethodAsync_. Pour obtenir un exemple d’utilisation de l’accès direct, consultez Créer une méthode dans la classe Win32_Process . Pour obtenir un exemple de la même opération à l’aide d’un objet SWbemServices , consultez SWbemServices.ExecMethod.

' Connect to WMI and obtain a Win32_Process object.
' This is also an SWbemObject object.
Set oProcess = GetObject("winmgmts:Win32_Process")

' Create the SWbemMethod.InParameters
' object to hold the input parameter needed
' for the Win32_Process.Create method call.
' The oProcess.Methods_("Create") call
' obtains a class object that defines
' the correct input parameters
' for the Win32_Process.Create call.
' The InParameters object is an 
' SWbemObject object so SWbemObject.SpawnInstance_
' can be called to create it.
Set oInParams = oProcess.Methods_("Create"). _
    InParameters.SpawnInstance_

' Specify the name of the process to be run.
oInParams.CommandLine = "Notepad.exe"
Set oOutParams = oProcess.ExecMethod_("Create", oInParams)

If oOutParams.ReturnValue = 0 Then
    wscript.echo "Create method executed successfully"
Else
' If the Create method failed to execute,
' an empty OutParameters object is returned. 
    If IsNull(oOutParams.ReturnValue) Then
        wscript.echo "Create method failed to execute."  
    Else
        wscript.echo "Create method executed but had error" _
            & "0x" & hex(oOutParams.ReturnValue)
    End If
End If

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista
Serveur minimal pris en charge
Windows Server 2008
En-tête
Wbemdisp.h
Bibliothèque de types
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

Voir aussi

SWbemObject

SWbemObject.ExecMethodAsync_

SWbemServices.ExecMethod