Präsentation herunterladen
Veröffentlicht von:Wieland Bornmann Geändert vor über 10 Jahren
1
WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
MSDN TechTalk – Dezember 2001 WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 1 WMI .NET Framework-Klassen in eigenen Anwendungen nutzen Dirk Primbs PSS Developer Support Microsoft GmbH
2
WMI .NET in eigenen Applikationen:
Agenda WMI Grundlagen WMI .NET in eigenen Applikationen: Überblick über das System.Management laufende Prozesse ermitteln Boot-Delay per WMI .NET setzen Asynchrone Bearbeitung & WMI-Eventbehandlung Fragen WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
3
WMI .NET in eigenen Applikationen:
Agenda Agenda WMI Grundlagen WMI .NET in eigenen Applikationen: Überblick über das System.Management laufende Prozesse ermitteln Boot-Delay per WMI .NET setzen Asynchrone Bearbeitung & WMI-Eventbehandlung Fragen WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
4
Wofür WMI? Routing-Tabelle? Welche Grafikkarte? Prozeß remote beenden?
Läuft das Programm XY noch? Installierte Netzwerkshares? Laufende Services? Performance Counter? System neu booten bei hoher Speicherauslastung? Installierte Software? Rechner zuschalten bei hoher Prozessorlast! DHCP aktivieren! WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
5
Was ist WMI? Implementierung des Web Based Enterprise Managements (WBEM) Standardisierung durch die DMTF (Desktop Management Task Force) Common Information Model (CIM) als Kern von WMI Beschreibung sowohl physischer (z. B. Festplatte) als auch logischer Objekte (Dateien, Prozesse) innerhalb eines Objektmodells CIM als Vereinigung von Standards wie ISO Management Framework, X.700 und SNMP Zugriffsmöglichkeiten auf Active Directory, Windows Installer, Performance Counters WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
6
Ermitteln verschiedenster Systemparameter
Möglichkeiten von WMI Ermitteln verschiedenster Systemparameter Sammeln von Informationen über mehrere Systeme hinweg Setzen von Parametern / Konfigurieren von Geräten/Programmen Auslösen von Events zu bestimmten Systemereignissen Abfrage von Informationen in WQL WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
7
CIM – Management Schema
WMI Architektur MSDN TechTalk – Dezember 2001 WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 7 WBEM Consumer WMI managed- code APIs Managed Code Client ODBC Adapter Client SWBEM… Script COM API COM CIM – Management Schema WMI Services Pub/Sub Service Correlation Event Filtering Query CIM Repository DCOM WMI Providers (werden bei Bedarf geladen) DCOM SNMP Active Directory WMI ext for WDM NT Event Log Perf Counters Registry WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
8
Provider bieten Zugriff auf Objekte an
WMI Architektur Provider bieten Zugriff auf Objekte an Consumer greifen auf Informationen zu Managed Objects (MOs) repräsentieren (Hardware- oder Software-) Ressourcen Organisiert in verschiedene „Namespaces“ Klassen als „Beschreibung“ von Ressourcen Instanzen von Klassen als „Verkörperung“ der tatsächlich vorhandenen Objekte WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
9
Ablauf einer WMI-Anfrage
\\myserver\root\cimv2:win32_logicaldisk.name=„c:“ Anforderung Lokaler WMI-Service Erfüllt lokale Anfragen Leitet Remote-Anfragen weiter WMI-Objekt DCOM Remote WMI-Service Ermittelt Werte mit Hilfe des Repository und den WMI-Providern Repository Provider WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
10
WMI Architektur - MOF Klassen werden als MOF-Dateien (Managed Object Format) in kompilierter Form (mofcomp.exe) im Repository abgelegt class Win32_Environment : CIM_SystemResource { string Caption; string Description; datetime InstallDate; string Name; string Status; boolean SystemVariable; string UserName; string VariableValue; }; WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
11
Klassen sind in Namespaces gruppiert
WMI-Pfade Klassen sind in Namespaces gruppiert Ein vollständiger Pfad gibt Zielserver, Namespace und ggf. Name der gewünschten Instanz an: ManagementPath path = new ManagementPath( @”\\MyServer\root\cimv2:” “Win32_logicaldisk=‘c:‘”); Standardpfad: \\localhost\root\cimv2 WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
12
Abfragesprache für Instanzen und Klassen innerhalb von WMI
WQL Abfragesprache für Instanzen und Klassen innerhalb von WMI Subset von SQL Beispiele: Alle Shares eines Systems: SELECT * FROM win32_share Ein spezieller Share: SELECT * FROM win32_share WHERE name=‚public‘ WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
13
Demo WMI mit dem CIM-Studio erkunden
WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
14
WMI .NET API Architektur
.NET Application .NET WMI Interfaces .NET WMI API COM Interfaces CIM Repository WinMgmt Service ( CIMOM ) .NET WMI Instrumentation Interfaces Provider (DLL, EXE) .Net Instrumentation … WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
15
WMI .NET in eigenen Applikationen:
Agenda Agenda WMI Grundlagen WMI .NET in eigenen Applikationen: Überblick über das System.Management laufende Prozesse ermitteln Boot-Delay per WMI .NET setzen Asynchrone Bearbeitung & WMI-Eventbehandlung Fragen WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
16
WMI .NET in eigenen Applikationen:
Agenda Agenda WMI Grundlagen WMI .NET in eigenen Applikationen: Überblick über das System.Management laufende Prozesse ermitteln Boot-Delay per WMI .NET setzen Asynchrone Bearbeitung & WMI-Eventbehandlung Fragen WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
17
ManagementEventObject ManagementObject / Management Class
System.Management Management ObjectSearcher EventWatcher OperationWatcher ManagementQuery Management ObjectCollection ManagementEventObject ObjectQuery EventQuery DataQuery SchemaQuery ManagementObject / Management Class Key ManagementOptions Security Main Class Property Set QualifierSet MethodSet Main Collection ManagementException Method Property Qualifier Collection ManagementPath ManagementScope Can be obtained from WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
18
Die wichtigsten Objekte
ManagementClass „Blueprint“ eines WMI-Objekts ManagementObject Instanz einer WMI-Klasse ManagementObjectSearcher Ermittelt Collections von WMI-Objekten WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
19
ManagementClass Repräsentiert eine WMI-Schemaklasse Scope Methods
Namespace des Objekts Methods Liefert Collection der an dem WMI-Objekt aufrufbaren Methoden Properties Liefert Collection der an dem WMI-Objekt vorhandenen Eigenschaften CreateInstance() Erzeugt eine zu der Klasse passende Objektinstanz GetInstances() Ermitteln aller im System vorhandenen Objektinstanzen der Klasse WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
20
ManagementClass – Beispiel 1
Ermitteln der für Win32_LogicalDisk verwendbaren Eigenschaften: ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk"); diskClass.Get(); foreach (MethodData m in diskClass.Methods) Console.WriteLine(m.Name); WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
21
ManagementClass – Beispiel 2
Boot-Delay per WMI .NET setzen ManagementClass c = new ManagementClass( "win32_computersystem"); ManagementObjectCollection col = c.GetInstances(); foreach (ManagementObject o in col) o[„SystemStartUpDelay“] = 3; WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
22
Demo Processviewer mit WMI .NET
WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
23
Repräsentiert WMI-Objekte
ManagementObject Repräsentiert WMI-Objekte Direkt instanziierbar: ManagementObject o = new ManagementObject(); o.Path = “Win32_Process=‘notepad.exe’”; oder ManagementObject o = new ManagementObject(“Win32_Process=‘notepad.exe’”); WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
24
ClassPath Indexer [] GetText() CompareTo() ManagementObject - II
Vollständiger Pfad zu der Klasse Indexer [] ermöglicht Zugriff auf Eigenschaften über deren Name Alternativ: GetPropertyValue(), GetQualifierValue() GetText() Liefert Quelltext des Objektes als MOF CompareTo() vergleicht mit anderen Objekten WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
25
ManagementObject - III
Scope Namespace des Objektes Path Pfad zum Objekt Get() bindet das .Net-Objekt an ein tatsächliches WMI-Objekt. GetRelated() “in Beziehung stehende” Objekte ermitteln (Anwendung bei Associations) GetRelationships() Vorhandene Associations ermitteln WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
26
GetMethodParameters()
ManagementObject - IV Put() Speichert gemachte Änderungen oder erzeugt neues WMI-Objekt CopyTo() Kopiert das aktuelle Objekt in einen anderen Namespace Delete() Löscht das repräsentierte WMI-Objekt InvokeMethod() Ausführung einer Methode des aktuellen WMI-Objektes GetMethodParameters() Argumentenliste einer Methode ermitteln WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
27
WMI-Objekt eines Service ermitteln und seine Eigenschaften anzeigen:
Beispiel 1 WMI-Objekt eines Service ermitteln und seine Eigenschaften anzeigen: ManagementObject myService = new ManagementObject(“Win32_Service= ‘Alerter’”); foreach (PropertyData p in myService.Properties) Console.WriteLine("{0}:\t{1}",p.Name, p.Value); WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
28
Abhängige Services ermitteln und gemeinsam starten:
Beispiel 2 Abhängige Services ermitteln und gemeinsam starten: ManagementObjectCollection relatedServices = myService.GetRelated(“Win32_Service”); foreach (ManagementObject service in relatedServices) service.InvokeMethod(“StartService”); WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
29
ManagementObjectSearcher
Wird verwendet, um Collections von Objekten zu erhalten Einsatz bei Enumerierung und Queries ManagementObjectSearcher s = new ManagementObjectSearcher(); s.Query = new WqlObjectQuery( "SELECT * FROM win32_process"); ManagementObjectCollection processes = s.Get(); foreach (ManagementObject process in processes) { Console.WriteLine(process["Name"]); } WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
30
ManagementObjectSearcher - II
Scope Namespace auf den sich die Query / Enumeration bezieht Query WQL-Abfrage zum Anfordern der WMI-Objekte Options Optionen für den Einsatz der Abfrage Get() Ausführen der Abfrage WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
31
Demo Der Remote-Processviewer
WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
32
Typisierte WMI-Klassen
WMI-Klassen mit strong typed Eigenschaften und Methoden Erstellung mittels Kommandozeilentool mgmtclassgen.exe mgmtclassgen win32_operatingsystem WMI Server Explorer Extension (Beta 2) WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
33
Typisierte Klassen – Beispiel
Labels aller im System vorhandenen Laufwerke ausgeben using MyApp.ROOT.CIMV2; … foreach (LogicalDisk l in LogicalDisk.GetInstances()) Console.WriteLine(„{0}:\t{1}“, l.Name, l.VolumeName); WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
34
Demo Typisierte WMI-Objekte
WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
35
WMI .NET in eigenen Applikationen:
Agenda Agenda WMI Grundlagen WMI .NET in eigenen Applikationen: Überblick über das System.Management laufende Prozesse ermitteln Boot-Delay per WMI .NET setzen Asynchrone Bearbeitung & WMI-Eventbehandlung Fragen WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
36
WMI .NET in eigenen Applikationen:
Agenda Agenda WMI Grundlagen WMI .NET in eigenen Applikationen: Überblick über das System.Management laufende Prozesse ermitteln Boot-Delay per WMI .NET setzen Asynchrone Bearbeitung & WMI-Eventbehandlung Fragen WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
37
Asynchrone Bearbeitung
ManagementOperationsObserver Bindeglied zwischen WMI und Rückrufmethoden Rückruf mittels Delegates: ObjectReady – Ein Objekt (etwa in einer Enumeration) steht zur Bearbeitung bereit Completed – Eine Operation wurde abgeschlossen WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
38
Permanente und temporäre Eventconsumer:
WMI-Events Permanente und temporäre Eventconsumer: Temporärer Consumer: WMI-Applikation, die Events von WMI empfängt Permanenter Consumer: Für ein Event registrierte Komponente; Komponentenstart bei Eintreffen eines passenden Events Event-Bindung via WQL: select * from __instancemodificationevent within 5 where targetinstance isa 'Win32_Processor' and targetinstance.LoadPercentage > 50 WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
39
__InstanceCreationEvent
WMI-Events - Typen __InstanceCreationEvent Löst aus, wenn Instanzen erzeugt werden __InstanceModificationEvent Löst bei Änderung einer Instanz aus __InstanceDeletionEvent Wird durch das Löschen einer Instanz erzeugt WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
40
ManagementEventWatcher
WMI-Events - Objekte ManagementEventWatcher Bindeglied zwischen WMI und Rückrufmethoden Synchrone Eventbearbeitung: WaitForNextEvent() Asynchroner Rückruf mittels Delegate: EventArrived – Ein passendes Event ist eingetreten und kann bearbeitet werden WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
41
Events synchron empfangen
// WQL-Eventabfrage erzeugen WqlEventQuery query = new WqlEventQuery("__InstanceModificationEvent", new TimeSpan(0,0,1), "TargetInstance isa \"Win32_Service\""); // Eventbindung anlegen ManagementEventWatcher watcher = new ManagementEventWatcher(query); // Event abwarten ManagementBaseObject e = watcher.WaitForNextEvent(); ManagementObject e2 = (ManagementBaseObject)e["TargetInstance"]; Console.WriteLine("Service {0}, Status {1}", e2["Name“], e2["State"]); // Eventbindung lösen watcher.Stop(); WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
42
Events asynchron empfangen
// Rückruffunktion bei eintreffenden Events public class EventHandlerClass { public void Arrived(object sender, EventArrivedEventArgs e) { Console.WriteLine(„Event arrived!“); } ... // Delegate einbinden EventHandlerClass c = new EventHandlerClass(); watcher.EventArrived += new EventArrivedHandler(c.Arrived); // Eventempfang starten watcher.Start(); // … Programmcode … // Eventbindung lösen watcher.Stop(); WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
43
Demo Asynchrone Bearbeitung und Eventempfang
WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
44
Was sonst noch? WMI ist in Windows 2000, Windows Me und Windows XP als Service installiert Separat für Windows 95 osr2.5, Windows 98, Windows 98 SE, und Windows NT 4.0 (ab SP4) installierbar Core und SDK Download im Web: SDK: Core: release.asp?ReleaseId=18490 Frei redistribuierbar WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
45
Und…. WMI-Tutorial Desktop Management Task Force Managing Windows with WMI: Administering Windows and Applications across Your Enterprise: WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
46
Fragen!? MSDN TechTalk – Dezember 2001 WMI .NET Framework-Klassen in eigenen Anwendungen nutzen 46 Uff... WMI .NET Framework-Klassen in eigenen Anwendungen nutzen
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.