Metode SWbemServices.ExecMethod

Metode ExecMethod dari objek SWbemServices menjalankan metode yang diekspor oleh penyedia metode. Metode ini memblokir sementara metode yang diteruskan ke penyedia yang sesuai dijalankan. Informasi dan status kemudian dikembalikan. Penyedia, bukan WMI, menerapkan metode .

Metode ini dipanggil dalam mode sinkron. Untuk informasi selengkapnya, lihat Memanggil Metode.

Untuk penjelasan tentang sintaks ini, lihat Konvensi Dokumen untuk Scripting API.

Sintaks

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

Parameter

strObjectPath

Wajib diisi. String yang berisi jalur objek objek tempat metode dijalankan. Untuk informasi selengkapnya, lihat Menjelaskan Lokasi Objek WMI.

strMethodName

Wajib diisi. Nama metode untuk objek .

objWbemInParams [opsional]

Objek SWbemObject yang berisi parameter input untuk metode yang dijalankan. Secara default, parameter ini tidak terdefinisi. Untuk informasi selengkapnya, lihat Membuat Objek InParameters dan Mengurai Objek OutParameters.

iFlags [opsional]

Dicadangkan. Nilai ini harus berupa nol.

objWbemNamedValueSet [opsional]

Biasanya, ini tidak ditentukan. Jika tidak, ini adalah objek SWbemNamedValueSet yang elemennya mewakili informasi konteks yang dapat digunakan oleh penyedia yang melayani permintaan. Penyedia yang mendukung atau memerlukan informasi tersebut harus mendokumentasikan nama nilai yang dikenali, jenis data nilai, nilai yang diizinkan, dan semantik.

Menampilkan nilai

Jika metode berhasil, objek SWbemObject dikembalikan. Objek yang dikembalikan berisi parameter keluar dan nilai yang dikembalikan untuk metode yang sedang dijalankan.

Kode kesalahan

Setelah penyelesaian metode ExecMethod , objek Err mungkin berisi salah satu kode kesalahan dalam daftar berikut.

wbemErrFailed - 2147749889 (0x80041001)

Kesalahan yang tidak ditentukan.

wbemErrInvalidClass - 2147749904 (0x80041010)

Kelas yang ditentukan tidak valid.

wbemErrInvalidParameter - 2147749896 (0x80041008)

Parameter yang ditentukan tidak valid.

wbemErrOutOfMemory - 2147749894 (0x80041006)

Tidak cukup memori untuk menyelesaikan operasi.

wbemErrInvalidMethod - 2147749934 (0x8004102E)

Metode yang diminta tidak tersedia.

wbemErrAccessDenied - 2147749891 (0x80041003)

Pengguna saat ini tidak berwenang untuk menjalankan metode.

Keterangan

Gunakan SWbemServices.ExecMethod sebagai alternatif untuk akses langsung untuk menjalankan metode penyedia jika tidak mungkin untuk menjalankan metode secara langsung. Metode ExecMethod memungkinkan Anda untuk mendapatkan parameter output, jika penyedia menyediakannya, dengan bahasa skrip yang tidak mendukung parameter output. Jika tidak, cara yang disarankan untuk memanggil metode adalah menggunakan akses langsung. Untuk informasi selengkapnya, lihat Memanipulasi Informasi Kelas dan Instans.

Misalnya, contoh kode berikut yang memanggil metode penyedia StartService di Win32_Service menggunakan akses langsung.

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

Contoh ini memanggil SWbemServices.ExecMethod untuk menjalankan metode StartService . Perhatikan bahwa jalur objek diperlukan karena SWbemServices.ExecMethod belum beroperasi pada objek, tidak seperti 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"

Metode SWbemServices.ExecMethod memerlukan jalur objek. Jika skrip sudah menyimpan objek SWbemObject , gunakan metode SWbemObject.ExecMethod .

Contoh

Contoh berikut menunjukkan metode ExecMethod . Skrip membuat objek Win32_Process yang mewakili proses yang menjalankan Notepad. Ini menunjukkan pengaturan objek InParameters dan cara mendapatkan hasil dari objek OutParameters . Untuk skrip yang menunjukkan operasi yang sama yang dilakukan secara asinkron, lihat SWbemServices.ExecMethodAsync. Untuk contoh penggunaan akses langsung, lihat Membuat Metode di Class Win32_Process. Untuk contoh operasi yang sama menggunakan SWbemObject, lihat 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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows Vista
Server minimum yang didukung
Windows Server 2008
Header
Wbemdisp.h
Pustaka jenis
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

Lihat juga

SWbemServices

SWbemObject.ExecMethod_

Memanggil Metode Penyedia

Memanipulasi Informasi Kelas dan Instans