Share via


Mgmtclassgen.exe (management sterk getypte klassegenerator)

Met het hulpprogramma Management Sterk getypte klassegenerator kunt u snel een vroeg gebonden beheerde klasse genereren voor een opgegeven WMI-klasse (Windows Management Instrumentation). De gegenereerde klasse vereenvoudigt de code die u moet schrijven om toegang te krijgen tot een exemplaar van de WMI-klasse.

Syntaxis

mgmtclassgen
WMIClass [options]
Argument Beschrijving
WMIClass De Windows Management Instrumentation-klasse waarvoor een vroege beheerde klasse moet worden gegenereerd.
Optie Omschrijving
/l taal Hiermee geeft u de taal op waarin de vroege beheerde klasse moet worden gegenereerd. U kunt CS (C#; standaard), VB (Visual Basic), MC (C++) of JS (JScript) opgeven als taalargument.
/m machine Hiermee geeft u de computer verbinding mee, waar de WMI-klasse zich bevindt. Standaard is dit de lokale computer.
/n pad Hiermee geeft u het pad naar de WMI-naamruimte die de WMI-klasse bevat. Als u deze optie niet opgeeft, genereert het hulpprogramma code voor WMIClass in de standaardnaamruimte Root\cimv2 .
/o classnamespace Hiermee geeft u de .NET-naamruimte op waarin de beheerde codeklasse moet worden gegenereerd. Als u deze optie niet opgeeft, genereert het hulpprogramma de naamruimte met behulp van de WMI-naamruimte en het schemavoorvoegsel. Het schemavoorvoegsel is het deel van de klassenaam voorafgaand aan het onderstrepingsteken. Voor de Win32_OperatingSystem-klasse in de root\cimv2-naamruimte genereert het hulpprogramma bijvoorbeeld de klasse in ROOT. CIMV2. Win32.
/p-bestandspad Hiermee geeft u het pad naar het bestand waarin de gegenereerde code moet worden opgeslagen. Als u deze optie niet opgeeft, maakt het hulpprogramma het bestand in de huidige map. De klasse en het bestand waarin de klasse wordt gegenereerd met behulp van het argument WMIClass . De naam van de klasse en het bestand zijn dezelfde als de naam van de WMIClass. Als WMIClass een onderstrepingsteken bevat, gebruikt het hulpprogramma het deel van de klassenaam na het onderstrepingsteken. Als de naam van de WMIClass bijvoorbeeld de indeling heeft Win32_LogicalDisk, heeft de gegenereerde klasse en het bestand de naam 'logicaldisk'. Als er al een bestand bestaat, overschrijft het hulpprogramma het bestaande bestand.
/pw-wachtwoord Hiermee geeft u het wachtwoord op dat moet worden gebruikt wanneer u zich aanmeldt bij een computer die is opgegeven door de optie /m .
/u gebruikersnaam Hiermee geeft u de gebruikersnaam die moet worden gebruikt bij het aanmelden bij een computer die is opgegeven door de optie /m .
/? Geeft de opdrachtsyntaxis en opties voor het hulpprogramma weer.

Opmerkingen

Mgmtclassgen.exe gebruikt de ManagementClass.GetStronglyTypedClassCode methode. Daarom kunt u elke aangepaste codeprovider gebruiken om code te genereren in andere beheerde talen dan C#, Visual Basic en JScript.

Houd er rekening mee dat gegenereerde klassen zijn gebonden aan het schema waarvoor ze worden gegenereerd. Als het onderliggende schema wordt gewijzigd, moet u de klasse opnieuw genereren als u de wijzigingen in het schema wilt weergeven.

In de volgende tabel ziet u hoe CIM-typen (Common Information Model) van WMI worden toegewezen aan gegevenstypen in een gegenereerde klasse:

CIM-type Gegevenstype in de gegenereerde klasse
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 Ongetrouwd
CIM_REAL64 Dubbel
CIM_BOOLEAN Booleaanse waarde
CIM_String Tekenreeks
CIM_DATETIME DateTime of TimeSpan
CIM_REFERENCE ManagementPath
CIM_CHAR16 Char
CIM_OBJECT ManagementBaseObject
CIM_IUNKNOWN Object
CIM_ARRAY Matrix van de hierboven genoemde objecten

Let op het volgende gedrag wanneer u een WMI-klasse genereert:

  • Het is mogelijk dat een standaard openbare eigenschap of methode dezelfde naam heeft als een bestaande eigenschap of methode. Als dit gebeurt, wijzigt het hulpprogramma de naam van de eigenschap of methode in de gegenereerde klasse om naamconflicten te voorkomen.

  • Het is mogelijk dat de naam van een eigenschap of methode in een gegenereerde klasse een trefwoord in de doelprogrammeertaal is. Als dit gebeurt, wijzigt het hulpprogramma de naam van de eigenschap of methode in de gegenereerde klasse om naamconflicten te voorkomen.

  • In WMI zijn kwalificaties modifiers die informatie bevatten om een klasse, instantie, eigenschap of methode te beschrijven. WMI maakt gebruik van standaardkwalificaties zoals Lezen, Schrijven en Sleutel om een eigenschap in een gegenereerde klasse te beschrijven. Een eigenschap die wordt gewijzigd met een leeskwalificatie , wordt bijvoorbeeld alleen gedefinieerd met een eigenschap get accessor in de gegenereerde klasse. Omdat een eigenschap die is gemarkeerd met de leeskwalificatie bedoeld is om alleen-lezen te zijn, wordt er geen set accessor gedefinieerd.

  • Een numerieke eigenschap kan worden gewijzigd door de waarden- en ValueMaps-kwalificaties om aan te geven dat de eigenschap alleen kan worden ingesteld op opgegeven toegestane waarden. Er wordt een opsomming gegenereerd met deze Waarden en ValueMaps en de eigenschap wordt toegewezen aan de opsomming.

  • De WMI gebruikt de term singleton om een klasse te beschrijven die slechts één exemplaar kan hebben. Daarom initialiseert de parameterloze constructor voor een singleton-klasse de klasse naar het enige exemplaar van de klasse.

  • Een WMI-klasse kan eigenschappen hebben die objecten zijn. Wanneer u een sterk getypte klasse genereert voor dit type WMI-klasse, kunt u overwegen om sterk getypte klassen te genereren voor de typen van de eigenschappen van het ingesloten object. Hiermee hebt u toegang tot de ingesloten objecten op een sterk getypte manier. Houd er rekening mee dat de gegenereerde code mogelijk het type van het ingesloten object niet kan detecteren. In dit geval wordt er een opmerking gemaakt in de gegenereerde code om u op de hoogte te stellen van dit probleem. Vervolgens kunt u de gegenereerde code wijzigen om de eigenschap te typen in de andere gegenereerde klasse.

  • In WMI kan de gegevenswaarde van het CIM_DATETIME gegevenstype een specifieke datum en tijd of een tijdsinterval vertegenwoordigen. Als de gegevenswaarde een datum en tijd vertegenwoordigt, is het gegevenstype in de gegenereerde klasse DateTime. Als de gegevenswaarde een tijdsinterval vertegenwoordigt, is het gegevenstype in de gegenereerde klasse TimeSpan.

U kunt ook een sterk getypte klasse genereren met behulp van de Server Explorer-beheerextensie in Visual Studio .NET.

Zie het onderwerp Windows Management Instrumentation in de platform-SDK-documentatie voor meer informatie over WMI.

Voorbeelden

Met de volgende opdracht wordt een beheerde klasse in C#-code gegenereerd voor de Win32_LogicalDisk WMI-klasse in de naamruimte Root\cimv2 . Het hulpprogramma schrijft de beheerde klasse naar het bronbestand op c:\disk.cs in de ROOT. CIMV2. Win32-naamruimte .

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

In het volgende codevoorbeeld ziet u hoe u programmatisch een gegenereerde klasse gebruikt. Eerst wordt een exemplaar van de klasse geïnventariseerd en wordt het pad afgedrukt. Vervolgens wordt er een exemplaar van de gegenereerde klasse gemaakt met een exemplaar van WMI. Processis de klasse die wordt gegenereerd voor Win32_Process en is de klasse die wordt gegenereerd voor Win32_LogicalDisk in de naamruimte Root\cimv2.LogicalDisk

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);  
   }  
}  

Zie ook