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 |
|
Pustaka jenis |
|
DLL |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |