SWbemServices.ExecMethod メソッド

SWbemServices オブジェクトの ExecMethod メソッドは、メソッド プロバイダーによってエクスポートされるメソッドを実行します。 このメソッドは、適切なプロバイダーに転送されたメソッドの実行中はブロックされます。 その後、情報と状態が返されます。 WMI ではなくプロバイダーがメソッドを実装します。

メソッドは、同期モードで呼び出されます。 詳細については、「メソッドの呼び出し」を参照してください。

この構文の説明については、「スクリプト API のドキュメント規則」を参照してください。

構文

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

パラメーター

strObjectPath

必須。 メソッドが実行されるオブジェクトのオブジェクト パスを含む文字列。 詳細については、「WMI オブジェクトの場所の説明」を参照してください。

strMethodName

必須。 オブジェクトのメソッドの名前。

objWbemInParams [オプション]

実行されるメソッドの入力パラメータを含む SWbemObject オブジェクト。 既定では、このパラメータは未定義です。 詳細については、「InParameters オブジェクトの構築と OutParameters オブジェクトの解析」を参照してください。

iFlags [オプション]

予約済み。 必ずゼロを指定します。

objWbemNamedValueSet [オプション]

通常、これは未定義です。 そうでない場合、これは SWbemNamedValueSet オブジェクトであり、その要素は、要求を処理しているプロバイダーが使用できるコンテキスト情報を表します。 このような情報をサポートする、または必要とするプロバイダーは、認識された値名、値のデータ型、許可された値、セマンティクスを文書化する必要があります。

戻り値

メソッドが成功すると、SWbemObject オブジェクトが返されます。 返されたオブジェクトには、実行中のメソッドの出力パラメータと戻り値が含まれています。

エラー コード

ExecMethod メソッドの完了後に、Err オブジェクトに次のリストのいずれかのエラー コードが含まれる場合があります。

wbemErrFailed - 2147749889 (0x80041001)

未定義のエラーが発生しました。

wbemErrInvalidClass - 2147749904 (0x80041010)

指定されたクラスが無効です。

wbemErrInvalidParameter - 2147749896 (0x80041008)

指定されたパラメータが無効です。

wbemErrOutOfMemory - 2147749894 (0x80041006)

操作を完了させるための十分なメモリがありません。

wbemErrInvalidMethod - 2147749934 (0x8004102E)

要求されたメソッドが使用できませんでした。

wbemErrAccessDenied - 2147749891 (0x80041003)

現在のユーザーはメソッドの実行を許可されませんでした。

解説

メソッドを直接実行できない場合は、"プロバイダー メソッド" を実行するための直接アクセスの代わりに、SWbemServices.ExecMethod を使用します。 ExecMethod メソッドを使用すると、出力パラメータをサポートしないスクリプト言語を使用して出力パラメータを取得できます (プロバイダーによって提供されている場合)。 それ以外の場合、推奨されるメソッドの呼び出し方法は、直接アクセスを使用することです。 詳細については、「クラスとインスタンスの情報の操作」を参照してください。

たとえば、Win32_ServiceStartService プロバイダー メソッドを呼び出す次のコード例では、直接アクセスを使用しています。

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

この例では、SWbemServices.ExecMethod を呼び出して StartService メソッドを実行します。 SWbemObject.ExecMethod とは異なり、SWbemServices.ExecMethod はオブジェクトに対してまだ動作していないため、オブジェクト パスが必要であることに注意してください。

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

SWbemServices.ExecMethod メソッドにはオブジェクト パスが必要です。 スクリプトが既に SWbemObject オブジェクトを保持している場合は、SWbemObject.ExecMethod メソッドを使用します。

次の例は、ExecMethod メソッドを示しています。 このスクリプトは、メモ帳を実行しているプロセスを表す Win32_Process オブジェクトを作成します。 InParameters オブジェクトの設定と、OutParameters オブジェクトから結果を取得する方法を示します。 非同期的に実行される同じ操作を示すスクリプトについては、SWbemServices.ExecMethodAsync に関する記事を参照してください。 直接アクセスを使用する例については、「Win32_Process クラスの Create メソッド」を参照してください。 SWbemObject を使用した同じ操作の例については、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

要件

要件
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008
Header
Wbemdisp.h
タイプ ライブラリ
Wbemdisp.tlb
[DLL]
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

関連項目

SWbemServices

SWbemObject.ExecMethod_

プロバイダー メソッドの呼び出し

クラスとインスタンスの情報の操作