Méthode SWbemServices.ExecMethod

La méthode ExecMethod de l’objet SWbemServices exécute une méthode exportée par un fournisseur de méthodes. Cette méthode se bloque pendant que la méthode qui est transférée au fournisseur approprié s’exécute. Les informations et les statuts sont ensuite retournées. C’est le fournisseur, et non WMI, qui implémente la méthode.

Cette méthode est appelée en mode synchrone. Pour plus d’informations, consultez Appel d’une méthode.

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

Syntaxe

objOutParams = .ExecMethod( _
  ByVal strObjectPath, _
  ByVal strMethodName, _
  [ ByVal objWbemInParams ], _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ] _
)

Paramètres

strObjectPath

Obligatoire. Chaîne qui contient le chemin d’accès de l’objet pour lequel la méthode est exécutée. Pour plus d’informations, consultez Description de l’emplacement d’un objet WMI.

strMethodName

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

objWbemInParams [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 n’est pas défini. Pour plus d'informations, voir Construction des objets InParameters et Analyse des objets OutParameters.

iFlags [facultatif]

Réservé. Cette valeur doit être zéro.

objWbemNamedValueSet [facultatif]

En règle générale, ceci 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 la méthode réussit, un objet SWbemObject est retourné. 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 ExecMethod 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

Utilisez SWbemServices.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. La méthode ExecMethod vous permet d’obtenir des paramètres de sortie, si le fournisseur les fournit, avec un langage de script qui ne prend pas en charge les paramètres de sortie. Sinon, le moyen recommandé d’appeler une méthode consiste à utiliser l’accès direct. Pour plus d’informations, consultez Manipulation des informations sur les classes et les instances.

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()

Cet exemple appelle SWbemServices.ExecMethod pour exécuter la méthode StartService. Notez qu’un chemin d’accès à l’objet est requis, car SWbemServices.ExecMethod ne fonctionne pas déjà sur l’objet, contrairement à SWbemObject.ExecMethod.

Set WbemServices = GetObject("winmgmts:")
Set oService = GetObject("winmgmts:Win32_Service='Alerter'")
Set oPath = GetObject("winmgmts:Win32_Service='Alerter'").Path_
WbemServices.ExecMethod oPath, "StartService"

La méthode SWbemServices.ExecMethod nécessite un chemin d’accès à l’objet. Si le script contient déjà un objet SWbemObject, utilisez la méthode SWbemObject.ExecMethod.

Exemples

L'exemple suivant affiche la méthode ExecMethod. Le script crée un objet Win32_Process qui représente un processus exécutant Notepad. Il montre la configuration d’un objet InParameters et comment obtenir les résultats d’un objet OutParameters. Pour un script qui montre les mêmes opérations effectuées de manière asynchrone, consultez SWbemServices.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 de SWbemObject, consultez SWbemObject.ExecMethod.

' Connect to WMI
set Services = getobject("winmgmts:root\cimv2")

' Obtain the class definition object of a Win32_Process object.
Set oProcess = Services.Get("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 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_
oInParams.CommandLine = "Notepad.exe"

'Call SWbemServices.ExecMethod with the WMI path Win32_Process
Set oOutParams = _
    Services.ExecMethod( "Win32_Process", "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_SWbemServices
IID
IID_ISWbemServices

Voir aussi

SWbemServices

SWbemObject.ExecMethod_

Appel d’une méthode de fournisseur

Manipulation des informations de classe et d’instance