Sie sind hier: Startseite
 Liste aller Codebeispiele

Ausgabe aller Attribute und Methoden eines WMI-Objekts

Ein Beispiel zum Einsatz der Klasse System.Management.ManagementClass aus der .NET-Klassenbibliothek.

Autor: Dr. Holger Schwichtenberg 

Beschreibung

Oft ist es sinnvoll, sich alle Attribute und Methoden eines WMI-Objekts auflisten zu lassen.

Die Attribute können mit einer For Each-Schleife über die Properties-Collection aufgelistet werden. Eine Liste der Methoden erhält man über die Klassendefinition. Das Meta-Objektmodell ermöglicht es, eine Verzeichnisdienst-Klasse zu binden. Dazu gibt es die spezielle Meta-Klasse Management.ManagementClass. Die Klasse ManagementClass bietet eine Collection Methods an, in der es für jede Methode ein MethodData-Objekt gibt.

Das passende ManagementClass-Objekt ermittelt man aus einem ManagementObject über den WMI-Pfad:

Dim mc As ManagementClass _
= New ManagementClass(mo.ClassPath.ClassName)

Ein Attribut in der Klasse ManagementObject, das direkt das zugehörige ManagementClass-Objekt liefert, gibt es leider nicht.

Beispiel

Die folgende Routine listet alle Attribute und Methoden der WMI-Klasse Win32_LogicalDisk auf.

Programmcodebeispiele Visual Basic .NET (VB.NET)

' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Ausgabe aller Attribute und Methoden eines WMI-Objekts
' (C) Holger@Schwichtenberg.de
' ============================
Sub wmi_mo4()
  Dim mo As Management.ManagementObject
  Dim mc As Management.ManagementClass
  Dim p As Management.PropertyData
  Dim m As MethodData
  Dim wert As Object
  ' --- Zugriff auf WMI-Objekt
  mo = New Management.ManagementObject _
   ("//MARS\root\cimv2:Win32_LogicalDisk.DeviceID='C:'")

  ' --- Alle Attribute des WMI-Objekts auflisten
  out("-- ALLE ATTRIBUTE:")
  For Each p In mo.Properties
   wert = p.Value
   If Not wert Is Nothing Then
   out(p.Name & "=" & wert.ToString())
   Else
   out(p.Name & "= (nicht belegt)")
   End If
  Next

  ' --- Alle Methoden des Meta-Objekts auflisten
  out("-- ALLE METHODEN:")
  mc = New Management.ManagementClass _
   (mo.ClassPath.ClassName)
  For Each m In mc.Methods
   out(m.Name)
  Next

End Sub

Programmcodebeispiele CSharp (C#)

using System;
using System.Management;

namespace FCL_Buch._System_Management {

  public class Samples_WMI_Allgemein {
public void WMI_ManagementObject4() {

   // Ausgabe aller Attribute und Methoden eines WMI-Objects
   // Zugriff auf Managed Object
   ManagementObject mo = new ManagementObject(@"//dagobar\root\cimv2:Win32_LogicalDisk.DeviceID='C:'");

   // Alle Attribute des Managed Objects auflisten
   FclOutput.PrintOutSubHeader("Alle Attribute:");
   foreach (PropertyData p in mo.Properties) {
   object wert = p.Value;
   if (wert != null)
   FclOutput.PrintOut(p.Name + "=" + wert.ToString());
   else
   FclOutput.PrintOut(p.Name + "= (nicht belegt)");
   }

   // Alle Methoden des Meta-Objekts auflisten
   FclOutput.PrintOutSubHeader("Alle Methoden:");
   ManagementClass mc = new ManagementClass(mo.ClassPath.ClassName);
   foreach (MethodData m in mc.Methods)
   FclOutput.PrintOut(m.Name);
   }
}
}

Querverweise

 Definition '.NET Framework Class Library'  Verfügbarkeit der Klasse 'System.Management.ManagementClass'  Übersicht über den FCL-Namensraum 'System.Management'  .NET & Visual Studio Community Portal