次の方法で共有


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_ServiceStartService プロバイダー メソッドを呼び出し、直接アクセスを使用しています。

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
Wbemdisp.h
タイプ ライブラリ
Wbemdisp.tlb
[DLL]
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject

関連項目

SWbemObject

SWbemObject.ExecMethodAsync_

SWbemServices.ExecMethod