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
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"
Membuat sesi.
Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
Buat string filter. Windows Remote Management mendukung WQL sebagai dialek filter.
strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
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.
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)
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
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk