Mengambil Kembali Instans WMI
Mengambil instance adalah salah satu metode pengambilan data paling umum yang mungkin Anda lakukan di WMI. Anda dapat mengambil instans yang sudah ada atau membuat instans baru yang tidak disebutkan namanya. Jalur WMI ke instans yang ada adalah parameter yang diperlukan. Untuk informasi selengkapnya, lihat Menjelaskan Lokasi Objek WMI.
Nota
Saat menyediakan contoh, penyedia mungkin tidak dapat memberikan nilai untuk properti tertentu. Kecuali dinyatakan lain dalam deskripsi properti, Anda tidak dapat menyimpulkan arti apa pun dari nilai kosong. Ini tidak akan dikacaukan dengan string yang memiliki nilai NULL. Dalam hal ini, nilai diisi. Ini kosong tetapi memiliki nilai: NULL.
Ambil salinan lokal instans dengan panggilan ke PowerShell cmdlet Get-WmiObject.
Untuk mengambil instans kelas WMI menggunakan PowerShell
Anda dapat mengambil kembali instans tertentu menggunakan parameter -class dan -filter.
Get-WmiObject -query "SELECT * FROM Win32_logicalDisk WHERE DeviceID = 'C:'"
Anda dapat mengambil instans WMI menggunakan C# dengan membuat objek pencarian menggunakan CimInstance, lalu mengisinya dengan nilai kunci yang relevan, lalu mencari objek tersebut dengan panggilan CimSession.GetInstance.
Untuk mengambil instans kelas WMI menggunakan C# (Microsoft.Management.Infrastructure)
Dengan menggunakan namespace Microsoft.Management.Infrastructure, buat objek CimInstance baru dengan nama kelas dan namespace yang relevan.
using Microsoft.Management.Infrastructure; ... string Namespace = @"root\cimv2"; string className = "Win32_LogicalDisk"; CimInstance myDrive = new CimInstance(className, Namespace);
Buat CimProperty yang berisi nama dan nilai properti kunci instans yang ingin Anda cari, dan tambahkan properti tersebut ke objek kelas Anda.
myDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
Ambil objek dari WMI melalui panggilan CimSession.GetInstance.
CimSession mySession = CimSession.Create("localhost"); CimInstance searchInstance = mySession.GetInstance(Namespace, myDrive);
Anda dapat mengambil instans kelas WMI tertentu, atau kumpulan instans kelas WMI, menggunakan kelas di namespace System.Management.
Nota
System.Management adalah namespace .NET asli yang digunakan untuk mengakses WMI; namun, API di namespace ini umumnya lebih lambat dan tidak dapat berskala sebaik versi Microsoft.Management.Infrastructure yang lebih modern.
Untuk mengambil instans kelas WMI menggunakan C# (System.Management)
Ambil salinan lokal instans tertentu dengan membuat ManagementObject baru , dengan nama dan nilai instans tertentu yang diteruskan melalui parameter ManagementPath. Anda kemudian dapat mengambil data instans dengan secara eksplisit memanggil ManagementObject.Get.
using System.Management; ... ManagementObject objInst = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'"); objInst.Get();
Sebagai alternatif, Anda dapat mengambil semua instans dari kelas WMI dengan mencarinya menggunakan ManagementObjectSearcher, lalu mengiterasi melalui ManagementObjectCollection yang dikembalikan.
using System.Management; ... ManagementObjectSearcher mgmtObjSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk"); ManagementObjectCollection colDisks = mgmtObjSearcher.Get(); foreach (ManagementObject objDisk in colDisks) { Console.WriteLine("Device ID : {0}", objDisk["DeviceID"]); } Console.ReadLine();
Anda dapat secara implisit memanggil metode Get dengan mengakses objek. Untuk informasi selengkapnya, lihat Mengambil Bagian dari Instans WMI.
Dapatkan salinan lokal instance dengan panggilan ke metode VBScript GetObject.
Untuk mengambil instans kelas WMI menggunakan VBScript
Panggil GetObject dengan jalur objek instans seperti yang ditunjukkan dalam contoh berikut.
Set objinst = GetObject("WinMgmts:Win32_LogicalDisk='C:'")
Mengambil instans tertentu memerlukan pemberian nama sebagai bagian jalur objek.
Di C++, panggil IWbemServices::GetObject.
Untuk mengambil instans kelas WMI menggunakan C++
Ambil salinan lokal instans dengan panggilan ke IWbemServices::GetObject atau IWbemServices::GetObjectAsync. Jalur WMI ke objek harus disertakan.
Sesuai namanya, GetObjectAsync mengambil instans secara asinkron, sementara GetObject mengambil instans secara sinkron. Jika Anda ingin menggunakan pengambilan asinkron, Anda harus mengimplementasikan antarmukaIWbemObjectSink.