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_Service で StartService プロバイダー メソッドを呼び出す次のコード例では、直接アクセスを使用しています。
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 |
|
タイプ ライブラリ |
|
[DLL] |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |