Bagikan melalui


Mengambil Instans WMI

Mengambil instans adalah salah satu prosedur pengambilan 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.

Catatan

Saat menyediakan instans, 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 cmdlet PowerShell Get-WmiObject .

Untuk mengambil instans kelas WMI menggunakan PowerShell

  • Anda dapat mengambil 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)

  1. 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);
    
  2. 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));
    
  3. Ambil objek dari WMI dengan 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 .

Catatan

System.Management adalah namespace .NET asli yang digunakan untuk mengakses WMI; namun, API di namespace layanan ini umumnya lebih lambat dan tidak menskalakan juga relatif terhadap mitra Microsoft.Management.Infrastructure yang lebih modern.

 

Untuk mengambil instans kelas WMI menggunakan C# (System.Management)

  1. Ambil salinan lokal instans tertentu dengan membuat ManagementObject baru, dengan nama dan nilai instans tertentu yang diteruskan meskipun 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();
    
  2. Secara bergantian, Anda dapat mengambil semua instans kelas WMI dengan mencarinya dengan ManagementObjectSearcher, lalu menghitung 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 Dapatkan dengan mengakses instans. Untuk informasi selengkapnya, lihat Mengambil Bagian dari Instans WMI.

Ambil salinan lokal instans dengan panggilan ke metode GetObject VBScript.

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 mengharuskan pemberian nama sebagai bagian dari jalur objek.

Di C++, panggil IWbemServices::GetObject.

Untuk mengambil instans kelas WMI menggunakan C++