Mengkueri untuk Instans Tertentu dari Sumber Daya

Panggilan ke Session.Enumerate memiliki parameter opsional yang mempersempit enumerasi ke dalam kueri. Karena API Scripting WinRM dan API WinRM C++ dimodelkan dengan cermat pada protokol WS-Management yang mendasar, parameter menggunakan terminologi yang sama untuk kueri sebagai protokol—filter dan filter dialek.

Anda dapat menggunakan parameter filter dan dialek Session.Enumerate atau Anda dapat membuat dan menyediakan objek ResourceLocator dan metode AddSelector , tetapi Anda tidak dapat melakukan keduanya.

Prosedur ini menjalankan kueri untuk adaptor jaringan yang memiliki TCP/IP terikat dan diaktifkan. Kueri meminta semua instans Win32_NetworkAdapterConfiguration yang memiliki properti IpEnabled diatur ke True. Kecuali untuk penambahan filter dan dialek, kueri ditangani seperti enumerasi sederhana.

Dalam contoh ini, nama sumber daya untuk konstanta Sumber Daya diwakili oleh tanda bintang "*" karena nama kelas, Win32_NetworkAdapterConfiguration, sudah disebutkan dalam string strFilter .

Untuk mengkueri instans sumber daya tertentu

  1. Untuk kemudahan membaca, tentukan URI sebagai konstanta.

    Const RemoteComputer = "servername.domain.com"
    Const Resource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
    Const Dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
    
  2. Membuat sesi.

    Set objWsman = CreateObject("Wsman.Automation")
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    
  3. Buat string filter. Windows Remote Management mendukung WQL sebagai dialek filter.

    strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
    
  4. Atur konstanta enumerasi yang diperlukan dalam parameter bendera.

    Ketahuilah bahwa jika bendera termasuk Enumeration ConstantsWSManFlagHierarchyDeepBasePropsOnly atau WSManFlagHierarchyShallow , maka layanan WinRM mengembalikan kode kesalahan ERROR_WSMAN_POLYMORPHISM_MODE_UNSUPPORTED.

  5. Panggil metode Session.Enumerate . Panggilan ini memulai enumerasi. Metode Session.Enumerate menetapkan konteks enumerasi protokol WS-Management, dipertahankan dalam objek Enumerator .

    Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
    
  6. Panggil metode Enumerator.ReadItem untuk mendapatkan item hasil berikutnya. Dalam protokol WS-Management, ini sesuai dengan operasi penarikan. Gunakan metode Enumerator.AtEndOfStream sebagai kontrol untuk mengetahui kapan harus berhenti membaca.

    While Not objResultSet.AtEndOfStream
        DisplayOutput(objResultSet.ReadItem)
    Wend
    

Contoh kode VBScript berikut menunjukkan skrip lengkap.

Const RemoteComputer = "servername.domain.com"
Const Resource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
Const Dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"

Set objWsman = CreateObject("Wsman.Automation")
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)

strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"

Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)

While Not objResultSet.AtEndOfStream
    DisplayOutput(objResultSet.ReadItem)
Wend

'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
    Dim xmlFile, xslFile
    Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0") 
    Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile) 
End Sub

Menggunakan Manajemen Jarak Jauh Windows

Menghitung atau Mencantumkan Semua Instans Sumber Daya

ResourceLocator