Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het ophalen van een exemplaar is een van de meest voorkomende ophaalprocedures die u waarschijnlijk zult uitvoeren in WMI. U kunt een bestaand exemplaar ophalen of een nieuw niet-benoemd exemplaar maken. Het WMI-pad naar het bestaande exemplaar is een vereiste parameter. Zie De locatie van een WMI-object beschrijvenvoor meer informatie.
Notitie
Bij het opgeven van een exemplaar kan een provider mogelijk geen waarde voor bepaalde eigenschappen opgeven. Tenzij anders vermeld in de beschrijving van de eigenschap, kunt u geen betekenis afleiden van een lege waarde. Dit is niet te verwarren met een tekenreeks met een NULL- waarde. In dit geval wordt de waarde ingevuld. Deze is leeg, maar heeft een waarde: NULL-.
Haal een lokale kopie van de instantie op door de PowerShell Get-WmiObject cmdlet aan te roepen.
Een exemplaar van een WMI-klasse ophalen met behulp van PowerShell
U kunt specifieke exemplaren ophalen met behulp van de parameters -class en -filter.
Get-WmiObject -query "SELECT * FROM Win32_logicalDisk WHERE DeviceID = 'C:'"
U kunt een WMI-exemplaar ophalen met behulp van C# door een zoekobject te maken met behulp van CimInstanceen deze vervolgens te vullen met de relevante sleutelwaarden en vervolgens naar dat object te zoeken met een CimSession.GetInstance aanroep.
Een exemplaar van een WMI-klasse ophalen met C# (Microsoft.Management.Infrastructure)
Maak met behulp van de naamruimte Microsoft.Management.Infrastructure een nieuwe CimInstance-object met de relevante klassenaam en naamruimte.
using Microsoft.Management.Infrastructure; ... string Namespace = @"root\cimv2"; string className = "Win32_LogicalDisk"; CimInstance myDrive = new CimInstance(className, Namespace);Maak een CimProperty- met de naam en waarde van de sleuteleigenschap van het exemplaar waarnaar u wilt zoeken en voeg die eigenschap toe aan uw klasseobject.
myDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));Haal het object op uit WMI met een CimSession.GetInstance aanroep.
CimSession mySession = CimSession.Create("localhost"); CimInstance searchInstance = mySession.GetInstance(Namespace, myDrive);
U kunt een specifiek WMI-klasse-exemplaar of een verzameling WMI-klasse-exemplaren ophalen met behulp van klassen in de System.Management naamruimte.
Notitie
System.Management was de oorspronkelijke .NET-naamruimte die wordt gebruikt voor toegang tot WMI; De API's in deze naamruimte zijn over het algemeen echter langzamer en worden niet zo goed geschaald ten opzichte van hun modernere Microsoft.Management.Infrastructure tegenhangers.
Een exemplaar van een WMI-klasse ophalen met C# (System.Management)
Haal een lokale kopie van een specifiek exemplaar op door een nieuwe ManagementObject-te maken, met de naam en de specifieke instantiewaarde die is doorgegeven in de parameter ManagementPath. Vervolgens kunt u de instantiegegevens ophalen door expliciet ManagementObject.Getaan te roepen.
using System.Management; ... ManagementObject objInst = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'"); objInst.Get();U kunt ook alle exemplaren van een WMI-klasse ophalen door ernaar te zoeken met een ManagementObjectSearcheren vervolgens de geretourneerde ManagementObjectCollectiondoor te lopen.
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();U kunt de methode Get impliciet aanroepen door toegang te krijgen tot het exemplaar. Voor meer informatie, zie Een deel van een WMI-exemplaar ophalen.
Haal een lokale kopie van het exemplaar op met een aanroep naar de VBScript-methode GetObject .
Een exemplaar van een WMI-klasse ophalen met behulp van VBScript-
Roep GetObject- aan met het objectpad van het exemplaar, zoals wordt weergegeven in het volgende voorbeeld.
Set objinst = GetObject("WinMgmts:Win32_LogicalDisk='C:'")Voor het ophalen van een specifiek exemplaar moet een naam worden opgegeven als onderdeel van het objectpad.
Roep in C++IWbemServices::GetObjectaan.
Een exemplaar van een WMI-klasse ophalen met behulp van C++
Haal een lokale kopie van het exemplaar op met een aanroep naar IWbemServices::GetObject of IWbemServices::GetObjectAsync. Het WMI-pad naar het object moet worden opgenomen.
Zoals de naam al aangeeft, haalt GetObjectAsync het exemplaar asynchroon op, terwijl GetObject het exemplaar synchroon ophaalt. Als u asynchroon ophalen wilt gebruiken, moet u de IWbemObjectSink interface implementeren.