Menyambungkan ke WMI dengan VBScript

Skrip WMI dapat mengembun banyak langkah yang diperlukan dalam program C++. Mereka dapat terhubung ke WMI, tidak hanya melalui objek SWbemLocator , tetapi juga melalui moniker "winmgmts:". Moniker adalah nama pendek yang menemukan namespace, kelas, atau instans di WMI. Nama "winmgmts:" adalah moniker WMI yang memberi tahu Host Skrip Windows untuk menggunakan objek WMI, terhubung ke namespace default, dan mendapatkan objek SWbemServices . Informasi koneksi lainnya, seperti tingkat peniruan atau kelas atau instans tertentu, muncul dalam string yang mengikuti nama moniker. Anda dapat menggunakan moniker dalam panggilan yang membuat atau mendapatkan objek WMI. Untuk informasi selengkapnya, lihat Membuat String Moniker.

Prosedur berikut menjelaskan cara menyambungkan ke WMI menggunakan SWbemLocator.

Untuk menyambungkan ke WMI menggunakan SWbemLocator

  1. Ambil objek pencari lokasi dengan panggilan ke CreateObject.

    Set Locator = CreateObject("WbemScripting.SWbemLocator")
    
  2. Masuk ke namespace menggunakan panggilan ke metode ConnectServer .

    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objService = objLocator.ConnectServer(".", "root\cimv2")
    

    Jika Anda tidak menentukan komputer dalam panggilan ke ConnectServer, maka WMI tersambung ke komputer lokal. Jika Anda tidak menentukan namespace layanan, maka WMI tersambung ke namespace yang ditentukan dalam kunci registri.

    \ HKEY_LOCAL_MACHINE PERANGKAT LUNAK\Microsoft\WBEM\Scripting\Namespace Default

    Namespace default adalah \root\cimv2. Untuk informasi selengkapnya tentang namespace, lihat Membuat Hierarki Dalam WMI.

  3. Atur tingkat peniruan dengan panggilan ke metode SWbemServices.Security_ .

    objService.Security_.ImpersonationLevel = 3 
    

    Untuk informasi selengkapnya, lihat Mengatur Tingkat Keamanan Proses Default Menggunakan VBScript.

  4. Terapkan tujuan skrip Anda.

    WMI mengekspos berbagai objek skrip yang digunakan untuk mengakses dan memanipulasi data di seluruh jaringan Anda. Untuk informasi selengkapnya, lihat Memanipulasi Api Informasi dan Skrip Kelas dan Instansuntuk WMI.

    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objService = objLocator.ConnectServer(".", "root\cimv2")
    objService.Security_.ImpersonationLevel = 3
    Set Jobs = objService.ExecQuery("SELECT * FROM Win32_ScheduledJob")
    i=0
    For each Job in Jobs
        i = i+1   
        WScript.Echo Job.JobId & "  " & Job.Command & VBNewLine
    Next
    If i = 0 Then
        WScript.Echo "No Jobs Scheduled with the AT command were found"
    End If
    

Prosedur berikut menjelaskan cara menyambungkan ke WMI dan mengambil objek menggunakan moniker.

Untuk menyambungkan ke WMI dan mengambil objek menggunakan moniker

  1. Panggil GetObject dengan moniker di parameter input.

    'the simple version
    Set MyObject = GetObject("winMgmts::Win32_scheduledJob")
    
    'Or the more complex version
    strComputer = "."
    Set MyObject = GetObject("winMgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\Root\CIMv2:Win32_ScheduledJob")
    

    Moiniker berisi sejumlah elemen yang dapat Anda gunakan untuk terhubung ke WMI:

    • "winmgmts:" memberi tahu WSH untuk menggunakan objek Scripting API. Dalam contoh khusus ini, WSH akan tahu bahwa WSH harus mengembalikan SWbemObject yang menjelaskan Win32_scheduledJob pertama pada sistem. Objek lain yang mungkin dikembalikan adalah SWbemCollection atau objek SWbemServices , tergantung pada apa yang dijelaskan moniker.

    • Anda dapat secara opsional mengatur tingkat keamanan untuk koneksi. Perhatikan bahwa Anda tidak dapat mengatur informasi nama dan kata sandi di moniker. Untuk informasi selengkapnya, lihat Mengamankan Klien Scripting.

    • Anda dapat secara opsional menentukan jalur ke objek WMI. Ini termasuk komputer lokal atau jarak jauh, namespace layanan, serta nama kelas. Untuk informasi selengkapnya tentang menggunakan VBScript GetObject dalam skrip WMI, lihat Membuat Instans dan Mengambil Instans WMI.

  2. Alih-alih mengambil satu item atau koleksi, Anda juga dapat memilih untuk mengambil objek SWbemServices (seperti yang dijelaskan dalam contoh sebelumnya). Setelah itu, Anda kemudian dapat memanggil kueri tambahan pada objek yang dikembalikan.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colScheduledJobs = objWMIService.ExecQuery("Select * from Win32_ScheduledJob")
    For Each objJob in colScheduledJobs
        Wscript.Echo "Job ID: " & objJob.JobId & "Command: " & objJob.Command & VBNewLine
    Next
    

    Dalam contoh sebelumnya, meniru, atau impersonationLevel=3, adalah tingkat keamanan proses default. Dalam contoh berikut, tidak perlu menentukan tingkat keamanan proses ini kecuali Anda perlu mengubah keamanan proses untuk mendelegasikan. Untuk informasi selengkapnya, lihat Mengatur Tingkat Keamanan Proses Default Menggunakan VBScript.

Pembuatan skrip di WMI