Code-Beispiel

Ausschnitt aus WMI_Bindung() - Objektbindung

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

Autor: Dr. Holger Schwichtenberg

Beschreibung

Die Verwendung von WMI beginnt mit der Bindung eines Meta-Objekts (ManagementObject oder ManagementClass) an ein WMI-Objekt oder eine WMI-Klasse. Das WMI-Objekt bzw. die -Klasse wird über einen WMI-Pfad spezifiziert. Dieser Pfad hat die Form:

\\Server\Namespace:Class.Key1="wert1",Key2="Wert2"

Mit Ausnahme von Class sind alle anderen Teile optional.

Bitte beachten Sie, dass im Gegensatz zur Verwendung in COM die COM-Moniker-ID "WinMgmts:" nicht mehr vor den Pfad gehört.

Ein solcher Pfad kann dem Konstruktor der Klassen ManagementObject und ManagementClass übergeben werden. Damit existiert die Bindung dann zunächst nur auf dem WMI-Client. Die Anfrage an das lokale oder entfernte WMI-Repository wird erst ausgeführt beim ersten Zugriff auf ein WMI-Attribut, beim ersten Aufruf einer WMI-Methode oder wenn explizit die Get()-Methode des Meta-Objekts aufgerufen wird. Erst dann wird festgestellt, ob die angeforderte WMI-Klasse bzw. das angeforderte WMI-Objekt existiert. Lediglich grundsätzliche Fehler in der Syntax des Pfades werden direkt bei der Instanziierung erkannt.

Programmcodebeispiele Visual Basic .NET (VB.NET)

Dim mo As Management.ManagementObject
Dim mc As Management.ManagementClass

' --- Bindung an eine lokale WMI-Klasse
mc = New ManagementClass("Win32_LogicalDisk")
mc.Get()
out("Gebunden an: " & mc.ToString)

' --- Bindung an ein entferntes WMI-Objekt
mo = New Management.ManagementObject _
("\\minbar\root\cimv2:Win32_LogicalDisk.DeviceID='c:'")
mo.Get()
out("Gebunden an: " & mo.ToString)

Programmcodebeispiele CSharp (C#)

using System;
using System.Management;

namespace FCLBuch._SystemManagement {

public class SamplesWMIAllgemein {

public void WMI_Bindung() {

// Bindung an eine lokale WMI-Klasse
ManagementClass mc = new ManagementClass("Win32_LogicalDisk");
mc.Get();
FclOutput.PrintOut("Gebunden an: " + mc.ToString());

// Bindung an ein entferntes WMI-Objekt
ManagementObject mo = new ManagementObject(@"\\Dagobar\root\cimv2:Win32_LogicalDisk.DeviceID='c:'");
mo.Get();
FclOutput.PrintOut("Gebunden an: " + mo.ToString());

// Bindung mit Optionen
// Optionen definieren
ConnectionOptions opt = new ConnectionOptions();
opt.Username = "dagobar\fe";
opt.Password = "xxx";
opt.Authentication = AuthenticationLevel.PacketPrivacy;
opt.Impersonation = ImpersonationLevel.Impersonate;
opt.Timeout = new TimeSpan(0, 0, 4); // 4 Sekunden

// Entfernten Computer definieren
ManagementScope scope = new ManagementScope(@"\\minbar\root\cimv2");
scope.Options = opt;

// Objekt definieren
ManagementPath path = new ManagementPath("Win32_LogicalDisk.DeviceID='c:'");

// Objekt binden
mo = new ManagementObject(scope, path, null);
mo.Get();
FclOutput.PrintOut("Gebunden an: " + mo.ToString());
}
}
}

Hinweise

Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B. Console.WriteLine() einsetzen.


 

Querverweise

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

Buchtipp

Buchcover PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch (5. Auflage Oktober 2022 (9. Auflage Gesamtreihe)) PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
Autor(en): Dr. Holger Schwichtenberg
Erschienen 2022
Umfang: 1426 Seiten
ISBN: 3446472967

Beratung & Support

Schulungen zu diesem Thema

  Anfrage für eine individuelle Schulung zum Thema VISUAL BASIC C#   Gesamter Schulungsthemenkatalog

Bücher zu diesem Thema

  Alle unsere aktuellen Fachbücher   E-Book-Abo für ab 99 Euro im Jahr