Metode SWbemServices.ExecMethodAsync

Metode ExecMethodAsync dari objek SWbemServices menjalankan metode yang diekspor oleh penyedia metode. Panggilan segera kembali ke klien saat parameter masuk diteruskan ke penyedia yang sesuai tempat metode dijalankan. Informasi dan status dikembalikan ke pemanggil melalui peristiwa yang dikirimkan ke sink yang ditentukan dalam objWbemSink. Penyedia, bukan Instrumentasi Manajemen Windows (WMI), menerapkan metode .

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

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

Sintaks

SWbemServices.ExecMethodAsync( _
  ByVal objWbemSink, _
  ByVal strObjectPath, _
  ByVal strMethodName, _
  [ ByVal objWbemInParams ], _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Parameter

objWbemSink

Wajib diisi. Buat objek SWbemSink untuk menerima objek. Sink objek yang menerima hasil panggilan metode. Parameter keluar dikirim ke peristiwa SWbemSink.OnObjectReady dari sink objek yang disediakan. Hasil mekanisme panggilan dikirim ke peristiwa SWbemSink.OnCompleted dari sink objek yang disediakan. Ketahuilah bahwa SWbemSink.OnCompleted tidak menerima kode pengembalian metode WMI. Namun, ia menerima kode pengembalian mekanisme pengembalian panggilan aktual, dan hanya berguna untuk memverifikasi bahwa panggilan terjadi atau gagal karena alasan mekanis. Kode hasil yang dikembalikan dari metode WMI dikembalikan dalam objek parameter keluar yang disediakan ke SWbemSink.OnObjectReady. Jika ada kode kesalahan yang dikembalikan, maka objek IWbemObjectSink yang disediakan tidak digunakan. Jika panggilan berhasil, implementasi IWbemObjectSink pengguna dipanggil untuk menunjukkan hasil operasi.

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 yang akan dijalankan.

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]

Bilangan bulat yang menentukan perilaku panggilan. Parameter ini dapat menerima nilai berikut.

wbemFlagSendStatus (128 (0x80))

Menyebabkan panggilan asinkron mengirim pembaruan status ke penanganan aktivitas OnProgress untuk sink objek.

wbemFlagDontSendStatus (0 (0x0))

Mencegah panggilan asinkron mengirim pembaruan status ke penanganan aktivitas OnProgress untuk sink objek.

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.

objWbemAsyncContext [opsional]

Objek SWbemNamedValueSet yang kembali ke sink objek untuk mengidentifikasi sumber panggilan asinkron asli. Gunakan parameter ini jika Anda melakukan beberapa panggilan asinkron menggunakan sink objek yang sama. Untuk menggunakan parameter ini, buat objek SWbemNamedValueSet dan gunakan metode SWbemNamedValueSet.Add untuk menambahkan nilai yang mengidentifikasi panggilan asinkron yang Anda lakukan. Objek SWbemNamedValueSet ini dikembalikan ke sink objek dan sumber panggilan dapat diekstraksi menggunakan metode SWbemNamedValueSet.Item . Untuk informasi selengkapnya, lihat Melakukan Panggilan Asinkron dengan VBScript.

Nilai kembali

Metode ini tidak mengembalikan nilai. Jika panggilan berhasil, objek OutParameters , yang juga merupakan SWbemObject disediakan ke sink yang ditentukan dalam objWbemSink. Objek OutParameters yang dikembalikan berisi parameter output dan nilai pengembalian untuk metode yang dijalankan. Untuk informasi selengkapnya, lihat Membuat Objek InParameters dan Mengurai Objek OutParameters.

Kode kesalahan

Setelah penyelesaian metode ExecMethodAsync , objek Err mungkin berisi salah satu kode kesalahan yang tercantum 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

Jika metode yang dijalankan memiliki parameter input, objek InParameters dalam parameter objWbemInParam harus sama dengan deskripsi dalam topik Membuat Objek InParameters dan Mengurai Objek OutParameters .

Gunakan SWbemServices.ExecMethodAsync sebagai alternatif untuk akses langsung untuk menjalankan metode penyedia ketika tidak dimungkinkan untuk menjalankan metode secara langsung. Misalnya, gunakan dengan bahasa skrip yang tidak mendukung parameter output, yaitu, jika metode Anda memiliki parameter OUT. Jika tidak, disarankan agar Anda menggunakan akses langsung untuk memanggil metode . Untuk informasi selengkapnya, lihat Memanipulasi Informasi Kelas dan Instans.

Metode SWbemServices.ExecMethodAsync memerlukan jalur objek. Jika skrip sudah berisi objek SWbemObject , Anda dapat memanggil SWbemObject.ExecMethodAsync.

Panggilan ini segera kembali. Informasi status dikembalikan ke pemanggil melalui panggilan balik yang dikirimkan ke sink yang ditentukan dalam objWbemSink. Untuk melanjutkan pemrosesan ketika panggilan selesai, terapkan subroutine untuk objWbemSink. Peristiwa OnCompleted .

Panggilan balik asinkron memungkinkan pengguna yang tidak diautentikasi untuk menyediakan data ke sink. Ini menimbulkan risiko keamanan terhadap skrip dan aplikasi Anda. Untuk informasi selengkapnya tentang cara menghilangkan risiko, lihat Mengatur Keamanan pada Panggilan Asinkron.

Gunakan parameter objWbemAsyncContext untuk memverifikasi sumber panggilan.

Contoh

Contoh kode berikut menunjukkan metode ExecMethodAsync . 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 sinkron, lihat SWbemServices.ExecMethod. Untuk contoh penggunaan akses langsung, lihat Membuat Metode di Class Win32_Process. Untuk contoh operasi yang sama menggunakan SWbemObject, lihat SWbemObject.ExecMethodAsync.

' 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 required
' 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_
oInParams.CommandLine = "Notepad.exe"

' Create sink to receive event resulting
' from the ExecMethodAsync call.
set Sink = wscript.CreateObject( _
    "WbemScripting.SWbemSink","Sink_")

' Call SWbemServices.ExecMethodAsync
' with the WMI path Win32_Process.

bDone = false
Services.ExecMethodAsync Sink, _
     "Win32_Process", "Create", oInParams

' Call the Win32_Process.Create method asynchronously.
' Set up a wait so the results of the method
' execution can be returned to 
' the sink subroutines.

while not bDone    
    wscript.sleep 1000  
wend

' Sink subroutines
sub Sink_OnObjectReady(oOutParams, oContext)
    wscript.echo "Sink_OnObjectReady subroutine " _ 
        &VBCR & "ReturnValue = " _
        & oOutParams.ReturnValue &VBCR & _
        "ProcessId = " & oOutParams.ProcessId
end sub

sub Sink_OnCompleted(HResult, LastErrorObj, oContext)
    wscript.echo "Sink_OnCompleted subroutine, hresult = " _
        & hex(HResult)
    bdone = true
end sub

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_

SWbemObject.ExecMethodAsync_

SWbemServices.ExecMethod

Memanggil Metode Penyedia

Memanipulasi Informasi Kelas dan Instans