Mgmtclassgen.exe (spravovaný generátor tříd se silnými typy)

Nástroj Management Strongly Typed Class Generator umožňuje rychle generovat spravovanou třídu s časnou vazbou pro zadanou třídu Windows Management Instrumentation (WMI). Vygenerovaná třída usnadňuje psaní kódu pro přístup k instanci třídy WMI.

Syntax

mgmtclassgen
WMIClass [options]
Argument Description
WMIClass Třída WMI, pro kterou chcete generovat spravovanou třídu s časnou vazbou.
Možnost Popis
Jazyk /l Určuje jazyk, ve kterém chcete vygenerovat spravovanou třídu s časnou vazbou. Jako argument jazyka můžete zadat CS (C#; výchozí), VB (Visual Basic), MC (C++) nebo JS (JScript).
/mstroj Určuje počítač, na kterém je uložena třída WMI a ke kterému je třeba se připojit. Výchozí hodnotou je místní počítač.
/ncesta Určuje cestu k oboru názvů služby WMI, který obsahuje třídu WMI. Pokud tuto možnost nezadáte, nástroj vygeneruje kód pro WMIClass ve výchozím oboru názvů Root\cimv2 .
/oclassnamespace Určuje obor názvů .NET, ve kterém chcete vygenerovat spravovanou třídu kódů. Pokud tuto možnost nezadáte, nástroj vygeneruje obor názvů pomocí oboru názvů WMI a předpony schématu. Předpona schématu je část názvu třídy před podtržítkem. Například pro třídu Win32_OperatingSystem v oboru názvů Root\cimv2 nástroj vygeneruje třídu v ROOT. CIMV2. Win32.
/pcesta k souboru Určuje cestu k souboru, do kterého chcete uložit vygenerovaný kód. Pokud tuto možnost nezadáte, nástroj vytvoří soubor v aktuálním adresáři. Pojmenuje třídu a soubor, ve kterém generuje třídu pomocí argumentu WMIClass . Název třídy a souboru jsou stejné jako název třídy WMIClass. Pokud WMIClass obsahuje znak podtržítka, nástroj použije část názvu třídy za znakem podtržítka. Pokud je například název třídy WMIClass ve formátu Win32_LogicalDisk, vygenerovaná třída a soubor mají název "logicaldisk". Pokud soubor již existuje, nástroj přepíše existující soubor.
/pwpassword Určuje heslo, které se má použít při přihlašování k počítači určenému parametrem /m .
/uuživatelské jméno Určuje uživatelské jméno, které se má použít při přihlašování k počítači určenému parametrem /m .
/? Zobrazí syntaxi příkazu a možnosti nástroje.

Poznámky

Mgmtclassgen.exe používá metodu ManagementClass.GetStronglyTypedClassCode . Proto můžete použít libovolného zprostředkovatele vlastního kódu k vygenerování kódu v jiných spravovaných jazycích než C#, Visual Basic a JScript.

Vygenerované třídy jsou svázány se schématem, pro které byly vygenerovány. Pokud se změní podkladové schéma, musíte znovu vygenerovat třídu, jestliže chcete, aby se změny projevily ve schématu.

Následující tabulka ukazuje, jak mapovat model WMI Common Information Model (CIM) na datové typy ve vygenerované třídě:

Typ CIM Datový typ ve vygenerované třídě
CIM_SINT8 SByte
CIM_UINT8 Byte
CIM_SINT16 Int16
CIM_UINT16 UInt16
CIM_SINT32 Int32
SIM_UINT32 UInt32
CIM_SINT64 Int64
CIM_UINT64 UInt64
CIM_REAL32 Jednoduché
CIM_REAL64 dvojité
CIM_BOOLEAN Logická hodnota
CIM_String Řetězec
CIM_DATETIME DateTime nebo TimeSpan
CIM_REFERENCE Cesta pro správu
CIM_CHAR16 Char
CIM_OBJECT ManagementBaseObject
CIM_IUNKNOWN Objekt
CIM_ARRAY Pole objektů uvedených výše

Při generování třídy WMI si všimněte následujícího chování:

  • Standardní veřejná vlastnost nebo metoda může mít stejný název jako existující vlastnost nebo metoda. V tomto případě nástroj změní název vlastnosti nebo metody ve vygenerované třídě, aby předešel konfliktům názvů.

  • Název vlastnosti nebo metody ve vygenerované třídě může být klíčovým slovem v cílovém programovacím jazyku. V tomto případě nástroj změní název vlastnosti nebo metody ve vygenerované třídě, aby předešel konfliktům názvů.

  • Kvalifikátory jsou ve službě WMI modifikátory obsahující informace popisující třídu, instanci, vlastnost nebo metodu. Rozhraní WMI používá k popisu vlastnosti ve vygenerované třídě standardní kvalifikátory, jako je čtení, zápis a klíč . Například vlastnost, která je upravena pomocí kvalifikátoru čtení , je definována pouze s vlastností get accessor ve vygenerované třídě. Vzhledem k tomu, že vlastnost označená kvalifikátorem čtení je určena jen pro čtení, není definována sada přístupových objektů.

  • Číselnou vlastnost lze upravit pomocí kvalifikátorů Values and ValueMaps tak, aby značily, že vlastnost lze nastavit pouze na zadané přípustné hodnoty. Výčet se vygeneruje s těmito hodnotami a ValueMaps a vlastnost je mapována na výčet.

  • Služba WMI používá k popisu třídy, která může mít pouze jednu instanci, pojem singleton. Proto konstruktor bez parametrů pro jednu třídu inicializuje třídu na jedinou instanci třídy.

  • Třída WMI může mít vlastnosti, které jsou objekty. Při generování třídy silného typu pro tento typ třídy WMI byste měli zvážit generování tříd silného typu pro typy vložených vlastností objektu. To vám umožní přistupovat k vloženým objektům způsobem silného typu. Vygenerovaný kód nemusí být schopen rozpoznat typ vloženého objektu. V tomto případě bude v generovaném kódu vytvořen komentář, který vás na tento problém upozorní. Pak můžete vygenerovaný kód upravit a zadat vlastnost pro další generovanou třídu.

  • Ve službě WMI mohou datové hodnoty datového typu CIM_DATETIME představovat konkrétní datum a čas nebo časový interval. Pokud datová hodnota představuje datum a čas, datový typ ve vygenerované třídě je DateTime. Pokud datová hodnota představuje časový interval, datový typ ve vygenerované třídě je TimeSpan.

Můžete také vygenerovat třídu silného typu pomocí rozšíření pro správu Průzkumník serveru v sadě Visual Studio .NET.

Další informace o rozhraní WMI najdete v tématu Windows Management Instrumentation v dokumentaci k sadě Platform SDK.

Příklady

Následující příkaz vygeneruje spravovanou třídu v kódu jazyka C# pro třídu služby WMI Win32_LogicalDisk v oboru názvů Root\cimv2 . Nástroj zapíše spravovanou třídu do zdrojového souboru na adrese c:\disk.cs v kořenovém adresáři. CIMV2. Obor názvů Win32 .

mgmtclassgen Win32_LogicalDisk /n root\cimv2 /l CS /p c:\disk.cs  

Následující příklad kódu ukazuje, jak používat vygenerovanou třídu při programování. Nejprve se vypočítá instance třídy a vytiskne se cesta. Poté se pomocí instance WMI vytvoří instance generované třídy, která má být inicializována. Process je třída vygenerovaná pro Win32_Process a LogicalDisk je třída vygenerovaná pro Win32_LogicalDisk v oboru názvů Root\cimv2 .

Imports System  
Imports System.Management  
Imports ROOT.CIMV2.Win32  
  
Public Class App
   Public Shared Sub Main()
      ' Enumerate instances of the Win32_process.  
      ' Print the Name property of the instance.  
      Dim ps As Process
      For Each ps In  Process.GetInstances()  
         Console.WriteLine(ps.Name)  
      Next ps  
  
      ' Initialize the instance of LogicalDisk with  
      ' the WMI instance pointing to logical drive d:.  
      Dim dskD As New LogicalDisk(New _  
         ManagementPath("win32_LogicalDisk.DeviceId=""d:"""))  
      Console.WriteLine(dskD.Caption)  
   End Sub  
End Class  
using System;  
using System.Management;  
using ROOT.CIMV2.Win32;  
  
public class App  
{  
   public static void Main()  
   {  
      // Enumerate instances of the Win32_process.  
      // Print the Name property of the instance.  
      foreach(Process ps in Process.GetInstances())  
      {  
         Console.WriteLine(ps.Name);  
      }  
  
      // Initialize the instance of LogicalDisk with  
      // the WMI instance pointing to logical drive d:.  
      LogicalDisk dskD = new LogicalDisk(new ManagementPath(  
        "win32_LogicalDisk.DeviceId=\"d:\""));  
      Console.WriteLine(dskD.Caption);  
   }  
}  

Viz také