Sdílet prostřednictvím


Načtení instance WMI

Načtení instance je jedním z nejběžnějších postupů načítání, které pravděpodobně budete provádět ve službě WMI. Můžete načíst existující instanci nebo vytvořit novou nepojmenovanou instanci. Cesta rozhraní WMI k existující instanci je povinný parametr. Další informace naleznete v tématu Popis umístění objektu WMI.

Poznámka

Při poskytování instance nemusí poskytovatel zadat hodnotu pro určité vlastnosti. Pokud není v popisu vlastnosti uvedeno jinak, nelze odvodit žádný význam z prázdné hodnoty. To není zaměňovat s řetězcem, který má hodnotu null. V tomto případě se hodnota naplní. Je prázdný, ale má hodnotu: null.

 

Načtěte místní kopii instance pomocí volání rutiny PowerShellu Get-WmiObject.

K načtení instance třídy WMI pomocí PowerShellu

  • Konkrétní instance můžete načíst pomocí parametrů -class a -filter.

    Get-WmiObject -query "SELECT * FROM Win32_logicalDisk WHERE DeviceID = 'C:'"
    

Instanci rozhraní WMI můžete načíst pomocí jazyka C# vytvořením objektu vyhledávání pomocí cimInstancea jeho vyplněním příslušnými klíčovými hodnotami a následným vyhledáním tohoto objektu pomocí CimSession.GetInstance volání.

Načtení instance třídy služby WMI pomocí jazyka C# (Microsoft.Management.Infrastructure)

  1. Pomocí oboru názvů Microsoft.Management.Infrastructure vytvořte nový objekt CimInstance s příslušným názvem třídy a oborem názvů.

    using Microsoft.Management.Infrastructure;
    ...
    string Namespace = @"root\cimv2";
    string className = "Win32_LogicalDisk";
    
    CimInstance myDrive = new CimInstance(className, Namespace);
    
  2. Vytvořte CimProperty obsahující název a hodnotu klíčové vlastnosti instance, kterou chcete vyhledat, a přidejte tuto vlastnost do objektu třídy.

    myDrive.CimInstanceProperties.Add(CimProperty.Create("DeviceID", "C:", CimFlags.Key));
    
  3. Načtěte objekt z rozhraní WMI pomocí volání CimSession.GetInstance.

    CimSession mySession = CimSession.Create("localhost");
    CimInstance searchInstance = mySession.GetInstance(Namespace, myDrive);
    

Pomocí tříd v oboru názvů System.Management můžete načíst buď konkrétní instanci třídy WMI, nebo kolekci instancí třídy WMI.

Poznámka

System.Management byl původní obor názvů .NET používaný pro přístup k rozhraní WMI; v tomto oboru názvů jsou však rozhraní API obecně pomalejší a neškálují se tak dobře ve srovnání se svými modernějšími protějšky Microsoft.Management.Infrastructure.

 

Načtení instance třídy služby WMI pomocí jazyka C# (System.Management)

  1. Načtěte místní kopii konkrétní instance vytvořením nového ManagementObjects názvem a konkrétní hodnotou instance předanou parametrem ManagementPath. Data instance pak můžete načíst explicitním voláním ManagementObject.Get.

    using System.Management;
    ...
    ManagementObject objInst = new ManagementObject("Win32_LogicalDisk.DeviceID='C:'");
    objInst.Get();
    
  2. Alternativně můžete načíst všechny instance třídy WMI vyhledáním pomocí ManagementObjectSearchera pak výčtem vrácené 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();
    

    Metodu Get můžete implicitně volat přístupem k instanci. Další informace naleznete v části Načtení části instance rozhraní WMI.

Načtěte místní kopii instance použitím metody VBScript GetObject.

Načtení instance třídy WMI pomocí jazyka VBScript

  • Volání GetObject s cestou objektu instance, jak je znázorněno v následujícím příkladu.

    Set objinst = GetObject("WinMgmts:Win32_LogicalDisk='C:'")
    

    Načtení konkrétní instance vyžaduje zadání názvu v rámci cesty k objektu.

V jazyce C++ volejte IWbemServices::GetObject.

Načíst instanci třídy WMI pomocí jazyka C++