Pobieranie wystąpienia WMI
Pobieranie obiektu jest jedną z najczęściej wykonywanych operacji, które prawdopodobnie przeprowadzisz w usłudze WMI. Możesz pobrać istniejące wystąpienie lub utworzyć nowe wystąpienie bez nazwy. Ścieżka WMI do istniejącego wystąpienia jest wymaganym parametrem. Aby uzyskać więcej informacji, zobacz Opis lokalizacji obiektu WMI.
Notatka
Podczas podawania wystąpienia dostawca może nie być w stanie podać wartości dla niektórych właściwości. O ile nie określono inaczej w opisie właściwości, nie można wywnioskowyć żadnego znaczenia z pustej wartości. Nie należy tego mylić z ciągiem, który ma wartość NULL. W takim przypadku wartość zostaje uzupełniona. Jest on pusty, ale ma wartość: null.
Pobierz lokalną kopię wystąpienia za pomocą wywołania polecenia PowerShell Get-WmiObject.
Aby pobrać wystąpienie klasy WMI przy użyciu programu PowerShell
Możesz pobrać określone wystąpienia, korzystając z parametrów klasy typu i filtra typu.
Get-WmiObject -query "SELECT * FROM Win32_logicalDisk WHERE DeviceID = 'C:'"
Wystąpienie usługi WMI można pobrać przy użyciu języka C#, tworząc obiekt wyszukiwania przy użyciu CimInstance, a następnie wypełniając je odpowiednimi wartościami klucza, a następnie wyszukując ten obiekt za pomocą wywołania CimSession.GetInstance.
Aby pobrać wystąpienie klasy WMI przy użyciu języka C# (Microsoft.Management.Infrastructure)
Korzystając z przestrzeni nazw Microsoft.Management.Infrastructure, utwórz nowy obiekt CimInstance z odpowiednią nazwą klasy i przestrzenią nazw.
using Microsoft.Management.Infrastructure; ... string Namespace = @"root\cimv2"; string className = "Win32_LogicalDisk"; CimInstance myDrive = new CimInstance(className, Namespace);
Utwórz CimProperty, która zawiera nazwę i wartość kluczowej właściwości wystąpienia, które chcesz wyszukać, i dodaj tę właściwość do obiektu swojej klasy.
myDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
Pobierz obiekt z usługi WMI za pomocą wywołania CimSession.GetInstance.
CimSession mySession = CimSession.Create("localhost"); CimInstance searchInstance = mySession.GetInstance(Namespace, myDrive);
Można pobrać określone wystąpienie klasy WMI lub kolekcję wystąpień klas WMI przy użyciu klas w przestrzeni nazw System.Management.
Notatka
System.Management była oryginalną przestrzenią nazw platformy .NET używaną do uzyskiwania dostępu do usługi WMI; jednak interfejsy API w tej przestrzeni nazw są ogólnie wolniejsze i nie skalują się tak dobrze jak ich bardziej nowoczesne odpowiedniki Microsoft.Management.Infrastructure.
Aby pobrać wystąpienie klasy WMI przy użyciu języka C# (System.Management)
Pobierz lokalną kopię określonego wystąpienia, tworząc nową ManagementObject, z nazwą i wartością określonego wystąpienia przekazaną przez parametr ManagementPath. Następnie możesz pobrać dane wystąpienia, jawnie wywołując ManagementObject.Get.
using System.Management; ... ManagementObject objInst = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'"); objInst.Get();
Alternatywnie możesz pobrać wszystkie wystąpienia klasy WMI, wyszukując je za pomocą ManagementObjectSearcher, a następnie wyliczając zwrócone ManagementObjectCollection.
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();
Możesz niejawnie wywołać metodę Get, korzystając z instancji. Aby uzyskać więcej informacji, zobacz Pobieranie części wystąpienia usługi WMI.
Pobierz lokalną kopię wystąpienia za pomocą wywołania metody vbScript GetObject.
Aby pobrać wystąpienie klasy WMI przy użyciu języka VBScript
Wywołaj GetObject ze ścieżką dostępu do obiektu wystąpienia, jak pokazano w poniższym przykładzie.
Set objinst = GetObject("WinMgmts:Win32_LogicalDisk='C:'")
Pobieranie określonego wystąpienia wymaga podania nazwy w ramach ścieżki obiektu.
W języku C++wywołaj IWbemServices::GetObject.
Aby pobrać wystąpienie klasy WMI przy użyciu języka C++
Pobierz lokalną kopię wystąpienia za pomocą wywołania IWbemServices::GetObject lub IWbemServices::GetObjectAsync. Ścieżka WMI do obiektu musi być dołączona.
Jak wskazuje nazwa, getObjectAsync pobiera wystąpienie asynchronicznie, podczas gdy GetObject pobiera wystąpienie synchronicznie. Jeśli chcesz użyć asynchronicznego pobierania, musisz zaimplementować interfejs IWbemObjectSink.