Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Dirk Primbs PSS Developer Support Microsoft GmbH WMI.NET Framework-Klassen in eigenen Anwendungen nutzen.

Ähnliche Präsentationen


Präsentation zum Thema: "Dirk Primbs PSS Developer Support Microsoft GmbH WMI.NET Framework-Klassen in eigenen Anwendungen nutzen."—  Präsentation transkript:

1 Dirk Primbs PSS Developer Support Microsoft GmbH WMI.NET Framework-Klassen in eigenen Anwendungen nutzen

2 2 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

3 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 3 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

4 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 4 Wofür WMI? Welche Grafikkarte? Routing-Tabelle? Installierte Netzwerkshares? Prozeß remote beenden? Läuft das Programm XY noch? Rechner zuschalten bei hoher Prozessorlast! Installierte Software? Laufende Services? Performance Counter? DHCP aktivieren! System neu booten bei hoher Speicherauslastung?

5 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

6 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 6 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

7 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 7 WBEM Consumer WMI Providers (werden bei Bedarf geladen) DCOM SNMPActiveDirectory WMI ext for WDM NT Event Log PerfCountersRegistry CIM – Management Schema WMI Services Pub/SubServiceCorrelationServiceEventFilteringQueryService CIM Repository DCOM DCOM ODBCAdapterODBCClient SWBEM… Script COM API COMClient WMI Architektur WMI managed- code APIs ManagedCodeClient

8 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 8 WMI Architektur Provider bieten Zugriff auf Objekte an Consumer greifen auf Informationen zu Managed Objects (MOs) repräsentieren (Hardware- oder Software-) Ressourcen Organisiert in verschiedeneNamespaces Klassen als Beschreibung von Ressourcen Instanzen von Klassen als Verkörperung der tatsächlich vorhandenen Objekte

9 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 9 Ablauf einer WMI-Anfrage Anforderung Lokaler WMI-Service Erfüllt lokale Anfragen Leitet Remote-Anfragen weiter Lokaler WMI-Service Erfüllt lokale Anfragen Leitet Remote-Anfragen weiter Remote WMI-Service Ermittelt Werte mit Hilfe des Repository und den WMI-Providern Remote WMI-Service Ermittelt Werte mit Hilfe des Repository und den WMI-Providern WMI-Objekt \\myserver\root\cimv2:win32_logicaldisk.name=c: DCOM Repository Provider

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

11 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 11 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 + Win32_logicaldisk=c:);\\MyServer\root\cimv2: Standardpfad: \\localhost\root\cimv2

12 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 12 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

13 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 13 Demo WMI mit dem CIM-Studio erkunden

14 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 14 WMI.NET API Architektur WinMgmt Service ( CIMOM ) COM Interfaces Provider (DLL, EXE) CIMRepository.NET WMI API.NET Application.NET WMI Interfaces ….NetInstrumentation.NET WMI Instrumentation Interfaces

15 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 15 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

16 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 16 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

17 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 17 System.Management Main Collection Management Options Management Query Management ObjectSearcher EventWatcher Management EventObject OperationW atcher Management Object / Management Class Management ObjectCollection Method Qualifier Property Property Set QualifierSet MethodSet ObjectQuery EventQuery DataQuery SchemaQuery Key Main Class Collection Can be obtained from Management Path Management Scope Management Exception Security

18 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

19 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 19 ManagementClass Repräsentiert eine WMI-Schemaklasse Scope 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

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

21 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;

22 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 22 Demo Processviewer mit WMI.NET

23 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 23 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);

24 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 24 ManagementObject - II ClassPath 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

25 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

26 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 26 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

27 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 27 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);

28 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 28 Beispiel 2 Abhängige Services ermitteln und gemeinsam starten: ManagementObjectCollection relatedServices = myService.GetRelated(Win32_Service) ; foreach (ManagementObject service in relatedServices) service.InvokeMethod(StartService);

29 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"]); }

30 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

31 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 31 Demo Der Remote- Processviewer

32 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) 155&area=search&ordinal=1 155&area=search&ordinal=1

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

34 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 34 Demo Typisierte WMI-Objekte

35 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 35 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

36 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 36 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

37 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

38 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 38 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

39 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 39 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

40 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 40 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

41 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();

42 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();

43 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 43 Demo Asynchrone Bearbeitung und Eventempfang

44 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=18490http://www.microsoft.com/downloads/ release.asp?ReleaseId=18490 Frei redistribuierbar

45 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 45 Und…. WMI-Tutorial ?ReleaseID=12570&area=search&ordinal=8 ?ReleaseID=12570&area=search&ordinal=8 Desktop Management Task Force Managing Windows with WMI: Administering Windows and Applications across Your Enterprise: /wmiover/wmiover.asp /wmiover/wmiover.asp

46 WMI.NET Framework-Klassen in eigenen Anwendungen nutzen 46 Fragen!? Uff...


Herunterladen ppt "Dirk Primbs PSS Developer Support Microsoft GmbH WMI.NET Framework-Klassen in eigenen Anwendungen nutzen."

Ähnliche Präsentationen


Google-Anzeigen