SWbemObject.ExecMethod_ メソッド
SWbemObject オブジェクトの ExecMethod_ メソッドは、メソッド プロバイダーによってエクスポートされたメソッドを実行します。
このメソッドは、適切なプロバイダーに転送されたメソッドの実行中は一時停止します。 その後、情報と状態が返されます。 WMI ではなく、プロバイダーでメソッドを実装します。
この構文の説明については、「スクリプト API のドキュメントの表記規則」を参照してください。
構文
objOutParams = .ExecMethod_( _
ByVal strMethodName, _
[ ByVal objwbemInParams ], _
[ ByVal iFlags ], _
[ ByVal objwbemNamedValueSet ] _
)
パラメーター
-
strMethodName [in]
-
必須。 オブジェクトのメソッドの名前。
-
objwbemInParams [in、オプション]
-
これは、実行されるメソッドの入力パラメータを含む SWbemObject オブジェクトです。 既定では、このパラメータは未定義です。 詳細については、「InParameters オブジェクトの構築と OutParameters オブジェクトの解析」を参照してください。
-
iFlags [in、オプション]
-
予約済みで、指定する場合は 0 (ゼロ) に設定する必要があります。
-
objwbemNamedValueSet [in、オプション]
-
通常は未定義です。 そうでない場合、これは SWbemNamedValueSet オブジェクトであり、その要素は、要求を処理しているプロバイダーが使用できるコンテキスト情報を表します。 このような情報をサポートする、または必要とするプロバイダーは、認識された値名、値のデータ型、許可された値、セマンティクスを文書化する必要があります。
戻り値
このメソッドが成功すると、SWbemObject オブジェクトが返されます。 返されたオブジェクトには、実行されているメソッドの出力パラメータと戻り値が含まれています。
エラー コード
ExecMethod_ メソッドの完了後に、Err オブジェクトに次のリストのいずれかのエラー コードが含まれる場合があります。
-
wbemErrFailed - 2147749889 (0x80041001)
-
未定義のエラーが発生しました。
-
wbemErrInvalidClass - 2147749904 (0x80041010)
-
指定されたクラスが無効です。
-
wbemErrInvalidParameter - 2147749896 (0x80041008)
-
指定されたパラメータが無効です。
-
wbemErrOutOfMemory - 2147749894 (0x80041006)
-
操作を完了させるための十分なメモリがありません。
-
wbemErrInvalidMethod - 2147749934 (0x8004102E)
-
要求されたメソッドが使用できませんでした。
-
wbemErrAccessDenied - 2147749891 (0x80041003)
-
現在のユーザーはメソッドの実行を許可されませんでした。
解説
このメソッドは SWbemServices.ExecMethod に似ていますが、これは、実行されるメソッドのオブジェクトに対して直接動作します。 たとえば、次のコード例では、Win32_Service の StartService プロバイダー メソッドを呼び出し、直接アクセスを使用しています。
oService = GetObject("winmgmts:Win32_Service=Alerter")
iStatus = oService.StartService()
このバージョンでは SWbemObject.ExecMethod_ を呼び出して StartService メソッドを実行します。
oService = GetObject("winmgmts:Win32_Service=Alerter")
Set outParam = process.ExecMethod_("StartService")
メソッドを直接実行できない場合は、"プロバイダー メソッド" を実行するための直接アクセスの代わりに、SWbemObject.ExecMethod_ を使用します。 たとえば、メソッドに out パラメータがある場合は、出力パラメータがサポートされないスクリプト言語で SWbemObject.ExecMethod_ を使用します。 それ以外の場合、推奨されるメソッドの呼び出し方法は、直接アクセスを使用することです。
- SWbemObject.ExecMethod_ メソッドは、SWbemObject で表されるオブジェクトに、実行するメソッドが含まれていることを前提としています。 これに対して、SWbemServices.ExecMethod にはオブジェクト パスが必要です。 メソッドを実行するオブジェクトを既に取得している場合は、SWbemObject.ExecMethod_ を使用します。
例
次の例は、ExecMethod メソッドを示しています。このスクリプトにより、メモ帳を実行するプロセスを表す Win32_Process オブジェクトが作成されます。 非同期に実行される同じ操作を示すスクリプトの詳細については、SWbemObject.ExecMethodAsync_ に関する記事を参照してください。 直接アクセスを使用する例については、Win32_Process クラスのメソッド作成に関する記事を参照してください。 SWbemServices オブジェクトを使用した同じ操作の例については、「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
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista |
サポートされている最小のサーバー |
Windows Server 2008 |
Header |
|
タイプ ライブラリ |
|
[DLL] |
|
CLSID |
CLSID_SWbemObject |
IID |
IID_ISWbemObject |