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 FCLBuch._SystemManagement {

public class SamplesWMIAllgemein {
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