Common Information Model

Das Common Information Model (CIM) ist ein erweiterbares, objektorientiertes Datenmodell, das Informationen zu verschiedenen Teilen eines Unternehmens enthält. Das CIM ist ein plattformübergreifender Standard, der von der Distributed Management Task Force (DMTF) verwaltet wird. Über WMI kann ein Entwickler mithilfe von CIM Klassen für Festplatten, Anwendungen, Netzwerkrouter und sogar für benutzerdefinierte Technologien wie etwa eine vernetzte Klimaanlage erstellen. Durch Anzeigen und Ändern einer CIM-Klasse kann ein Manager unterschiedliche Aspekte des Unternehmens steuern. So kann er beispielsweise eine CIM-Klasseninstanz für eine Desktop-Arbeitsstation abfragen. Anschließend kann er ein Skript ausführen, um die CIM-Arbeitsstationsinstanz zu ändern. Sämtliche Änderungen an der CIM-Klasseninstanz der Arbeitsstation werden von WMI in Änderungen an der eigentlichen Arbeitsstation umgewandelt.

Das CIM ist ein sprachunabhängiges Programmiermodell, das objektorientierte Konzepte zur Beschreibung eines Unternehmens verwendet. Mithilfe von drei Ebenen der Vererbung zwischen übergeordneten und untergeordneten Elementen kann das CIM sowohl allgemeine als auch spezifische Aspekte eines Unternehmens beschreiben. Das CIM verwendet zudem eine Technik namens „Assoziation“, um verschiedene Teile des Unternehmensmodells miteinander zu verknüpfen, und verwendet Schemata zur Unterscheidung verschiedener Verwaltungsumgebungen.

Das CIM wurde entwickelt, um eine konsistente Sicht auf logische und physische Objekte in einer Verwaltungsumgebung zu bieten. Das CIM stellt verwaltete Objekte mithilfe eines objektorientierten Konstrukts dar, das als „Klasse“ bezeichnet wird. Wie eine C++- oder COM-Klasse kann eine CIM-Klasse Eigenschaften zur Beschreibung von Daten und Methoden zur Beschreibung des Verhaltens enthalten. Wie ein Satz von COM-Klassen ist das CIM nicht an eine Plattform gebunden. WMI umfasst jedoch eine Erweiterung des CIM, die die Microsoft Windows-Betriebssystemplattformen beschreibt.

Das CIM definiert drei Klassenebenen:

  • Core

    Kernklassen repräsentieren verwaltete Objekte, die für alle Verwaltungsbereiche gelten. Diese Klassen bieten ein grundlegendes Vokabular für die Analyse und Beschreibung von verwalteten Systemen. Die Klassen __Parameters und __SystemSecurity sind Beispiele für Kernklassen.

  • Allgemein

    Allgemeine Klassen repräsentieren verwaltete Objekte, die für bestimmte Verwaltungsbereiche gelten. Allgemeine Klassen sind jedoch unabhängig von einer bestimmten Implementierung oder Technologie. Sie sind eine Erweiterung der Kernklassen. Die Klasse CIM_UnitaryComputerSystem ist ein Beispiel für eine allgemeine Klasse.

  • Erweitert

    Erweiterte Klassen repräsentieren verwaltete Objekte, bei denen es sich um technologiespezifische Ergänzungen zu den allgemeinen Klassen handelt. Eine erweiterte Klasse gilt in der Regel für eine bestimmte Plattform, z. B. UNIX oder die Microsoft Win32-Umgebung. Die Klasse Win32_ComputerSystem ist ein Beispiel für eine erweiterte Klasse.

Entwickler*innen können eine Klasse von einer anderen Klasse ableiten. Eine abgeleitete Klasse repräsentiert einen Spezialfall der übergeordneten Klasse und erbt alle Eigenschaften und Methoden der übergeordneten Klasse. Zum Beispiel erbt Win32_ComputerSystem von CIM_UnitaryComputerSystem. Vererbungsbeziehungen können mithilfe der Systemeigenschaften __Derivation, __Dynasty und __SuperClass bestimmt werden. Die Systemeigenschaft __Derivation ist ein Array von Zeichenfolgen, das die gesamte Vererbungskette bis zur Stammklasse (einschließlich) auflistet, die auch in __Dynasty enthalten ist. Die Systemeigenschaft __SuperClass zeigt die unmittelbar übergeordnete Klasse der aktuellen Klasse an.

WMI unterstützt ebenfalls Assoziationen. Eine Assoziation ist eine Beziehung zwischen zwei oder mehr verschiedenen WMI-Klassen. Beispielsweise verfügt eine ausgeführte Arbeitsstation in der Regel über einen Prozessor. Die WMI Assoziationsklasse Win32_ComputerSystemProcessor verknüpft die Arbeitsstationsklasse Win32_ComputerSystem mit der Prozessorklasse Win32_Processor. Eine Assoziationsklasse muss jedoch nicht zwei abhängige Klassen miteinander verknüpfen. Der Hauptzweck einer Assoziationsklasse besteht darin, Beziehungen zwischen Klassen aufzuzeigen, die nicht notwendigerweise voneinander abhängig sind. Weitere Informationen finden Sie unter Deklarieren einer Assoziationsklasse.

Schließlich unterstützt WMI das Konzept von Schemas. Im Kontext von WMI ist ein Schema eine Gruppe von Klassen, die eine bestimmte Verwaltungsumgebung beschreiben. Das Microsoft Windows Software Development Kit (SDK) verwendet zwei Schemas: das CIM-Schema und das Win32-Schema. Die Namen der CIM-Schemaklassen beginnen mit CIM_, die Namen der Win32-Schemaklassen beginnen mit Win32_. Das CIM-Schema enthält die Definitionen für die Kernklassen und die allgemeinen Klassen, während das Win32-Schema die Definitionen für die erweiterten Klassen enthält, die in der Win32-Umgebung üblich sind. Ein Drittanbieter kann jedoch eigene Schemas erstellen, um anbieterspezifische Anforderungen zu beschreiben. Da Schemas so konzipiert sind, dass sie unbegrenzt erweiterbar sind, können Entwickler*innen jederzeit neue Klassen hinzufügen, um neue verwaltete Objekte in einer bestehenden Umgebung zu beschreiben. Der Einfachheit halber entscheiden sich die meisten Anbieter jedoch dafür, Schemas zu erstellen, die Eigenschaften von den CIM- oder Win32-Schemas erben.