CIM-Probe
Die CIM-Probe verwendet WBEM-Protokolle, um einen bestimmten CIM-Server, den CIM-Objektmanager, nach einer Reihe von Datenobjekten und Eigenschaften abzufragen.
Anweisungen zum Konfigurieren von Probe-Parametern finden Sie unter Legen Sie die Probe-Parameter fest.
Die folgenden Parameter können an die CIM-Probe übergeben werden:
| Parameter | Beschreibung | Standardwert |
|---|---|---|
| Quelle | [Erforderlich] der anfängliche Host, mit dem eine Verbindung hergestellt werden soll. | Keine |
| port | Der Port, mit dem eine Verbindung hergestellt werden soll. Wenn leer, wird der Wert durch den Parameter „Schema“ bestimmt: http = 5988, https = 5989. | 5988 oder 5989 |
| Schema | [Erforderlich] das zu verwendende Schema: „„http““ oder „„https““. | http |
| namespace | [Erforderlich] der CIM-Namespace. Kann von einer Abfrage überschrieben werden. | Keine |
| queries | [Erforderlich] Eine durch Semikolon getrennte Liste von CIM-Probe-Abfragen, für die Ergebnisse verarbeitet und zurückgegeben werden sollen. | Keine |
| Wiederholungen | Die Anzahl der Wiederholungsversuche einer Abfrage, wenn sie aufgrund von Netzwerkkonnektivitätsproblemen fehlschlägt. | 2 |
| Connection_timeout | Die Anzahl der Millisekunden, die die Probe benötigt, um eine Verbindung zu einem Server herzustellen. | 5.000 |
| Socket_Timeout | Die Anzahl der Millisekunden, die die Probe zum Lesen von Daten benötigt. | 5.000 |
Die CIM-Intermediate-Abfragesprache (CimIQL) verwendet Schlüssel, Filter und Dot-Walking, um das CIM-Schema zu durchlaufen.
Parametererweiterung
Die CIM-Abfragesprache unterstützt die standardmäßige SNC-Parametererweiterung für vorverarbeitete Probe. Platzieren Sie Variablen in Abfragen, indem Sie ihre Namen wie folgt verkapseln:
${foobar}.CIM_RunningOS[0].Name
CIM_ComputerSystem.${barfoo}Der Text ${Foobar} wird durch den Inhalt des an die CIM-Probe übergebenen Foobarprobe-Parameters ersetzt, ebenso für barfoo.
CIMIQL
Die CIM-Intermediate-Abfragesprache (CimIQL) ist eine Zwischensprache, die den Prozess der Abfrage von CIM-Anbietern vereinfachen soll.
CimIQL unterstützt derzeit den standardmäßigen WBEM-Protokollstapel (Web-Based Enterprise Management), andere, z. B. Webservicemanagement (WS-MAN), können jedoch in Zukunft hinzugefügt werden. Die Syntax der Abfragesprache entlehnt sich Elemente von MicrosoftMicrosoft Azure Event HubsWMI-Abfragesprache und UNIXWbemcli-Befehl von . Die CimIQL-Bibliothek ist eine reine Java-Implementierung.
CimIQL-Syntax
Die CimIQL-Syntax besteht aus mehreren Elementen, einschließlich einer Abfrage und verschiedenen Token.
| Element | Beschreibung |
|---|---|
| Erklärung | Das grundlegendste Element von CimIQL ist gültig . Eine Anweisung enthält mehrere Abfragen, die durch einen Punkt getrennt sind. Zeichen. |
| Abfrage | A Stellt eine einzelne protokollunabhängige Anforderung auf allgemeiner Ebene dar. Jede Abfrage besteht aus geschachtelten Sprachkomponenten und Unterkomponenten, die als Token bezeichnet werden. |
| Token | A Beschreibt einen bestimmten lexikalischen Aspekt der CimIQL-Syntax. |
| Vorgangstoken | Das erste Token jeder Abfrage muss ein sein , Der den gesamten auszuführenden logischen Vorgang darstellt. |
| Komponentententoken | A Ist eine Unterkomponente eines Vorgangstoken. |
| Ergebnis | Jede Abfrage wird mit einem Ergebnis gekoppelt, das dann als Eingabe für die nächste Abfrage in der Anweisung bereitgestellt wird. A Besteht aus einer Reihe von Objekten und ihren Eigenschaften. |
CimIQL-Vorgangstoken
Die CimIQL-Probe erfordert Vorgangstoken.
Jeder der folgenden Kernvorgänge hat ein Gegenstück in CIM-Vorgänge über HTTP Standard.
| Rückgabewert | Details | Entsprechender CIM-Vorgang über HTTP |
|---|---|---|
| Klassenobjekt | Objekt Abrufen Ruft ein einzelnes Objekt einer bestimmten Klasse ab, indem alle ihre eindeutigen Schlüssel (als) angegeben werden Schlüssel-Token ) Und beliebig optional Parameter-Token , Durch Kommas getrennt. |
GetInstance |
| Klassenobjekt | Objekte Auflisten Ruft Objekte ab, die einem Satz von entsprechen Bedingungstoken Und Parameter-Token . |
EnumerateInstances |
| Klassenobjekt | Listet Zugeordnete Objekte Auf Ruft Objekte ab, die jedem Ergebnis aus der vorherigen Abfrage zugeordnet sind. |
Associators |
| Anweisungsergebnisse | Substitution Ein No-OP-Token, das die Ergebnisse einer vorherigen benannten Anweisung als Eingabe in die nächste Abfrage der eigenen Anweisung einspeist. |
Referenzieren Sie die Ergebnisse einer benannten Anweisung |
Objekt-Token Abrufen
- Ruft ein einzelnes Objekt einer bestimmten Klasse ab, indem alle ihre eindeutigen Schlüssel (als Schlüssel-Token) angegeben werden Schlüssel-Token ) Und beliebig optional Parameter-Token , Durch Kommas getrennt. Dieses Token wird auch als bezeichnet .
- Der <classname> ist der CIM-Klassenname des gewünschten Objekts, bei dem die Groß-/Kleinschreibung beachtet wird. Standardmäßig werden Objekte der angegebenen Klasse und aller erweiterten Klassen abgerufen.
- Die Schlüssel- und Parameter-Token werden von einem einzelnen Paar geschweifter Klammern { ... } eingeschlossen.
- Dieses Token darf nur als erste Abfrage in einer Anweisung verwendet werden.
- Gibt zurück: Klassenobjekt
- Beispiel:
CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*
Objekttoken Auflisten
- Ruft Objekte ab, die einem Satz von entsprechen Bedingungstoken Und Parameter-Token . Dieses Token wird auch als bezeichnet .
- Die Bedingungstoken und Parameter-Token werden von zwei Paaren geschweifter Klammern {{ ... }} eingeschlossen. Die geschweiften Klammern sind optional, wenn keine Bedingungen oder Parameter erforderlich sind.
- Der <classname> ist der CIM-Klassenname der gewünschten Objekte, bei dem die Groß-/Kleinschreibung beachtet wird. Standardmäßig werden Objekte der angegebenen Klasse und aller erweiterten Klassen abgerufen.
- Die Indextoken Ist optional.
- Dieses Token darf nur als erste Abfrage in einer Anweisung verwendet werden.
- Gibt zurück: Klassenobjekt
- Beispiel:
CIM_ComputerSystem{{Name!='runtime'}}.*
Listet Zugeordnete Objekttoken Auf
- Ruft Objekte ab, die jedem Ergebnis aus der vorherigen Abfrage zugeordnet sind.
- Die Bedingungstoken Und Parameter-Token Werden von zwei Paaren geschweifter Klammern {{ ... }} eingeschlossen. Die geschweiften Klammern sind optional, wenn keine Eigenschaftsfilter oder Parameter erforderlich sind.
- Der <association classname> ist der Name der viele-zu-viele- oder eins-zu-viele-Klasse, die zwei Objekte miteinander verknüpft. Standardmäßig werden Objekte der angegebenen Klasse und aller erweiterten Klassen abgerufen.
- Die <parameter token>, Ergebnisklasse, kann angegeben werden, um Ergebnisse basierend auf dem Klassennamen des resultierenden Objekts zu filtern.
- Die Indextoken Ist optional.
- Dieses Token darf nicht als erste Abfrage in einer Anweisung verwendet werden.
- Gibt zurück: Klassenobjekt
- Beispiel:
CIM_ComputerSystem{{Name='runtime'}}[2].*
Ersetzungstoken
- Ein No-OP-Token, das die Ergebnisse einer vorherigen benannten Anweisung als Eingabe in die nächste Abfrage der eigenen Anweisung einspeist.
- Gibt zurück: Ungültig
- Beispiel:
$(lastComputer).ElementName
CimIQL-Komponenten-Token
Die CimIQL-Probe erfordert Komponenten-Token, bei denen es sich um Unterkomponenten operativer Token handelt.
| Token | Details |
|---|---|
| Eigenschaften-Token | * ODER <property name>,<property name>,... Gibt an, welche Eigenschaften für jedes Objekt des endgültigen Ergebnissatzes zurückgegeben werden sollen. |
| Trennzeichen-Token Abfragen | an. (Zeitraum) Trennt Abfragen. |
| Indextoken | [Index] Reduziert die Ergebnisse einer vorhergehenden Abfrage auf ein einzelnes Objekt im angegebenen ganzzahligen Index. |
| Schlüsseltoken | <key name>='<value>' Stimmt mit einer als Schlüssel festgelegten Objekteigenschaft anhand des genauen Werts überein. |
| Bedingungstoken | <property name> <conditional operator> <enclosed value> Entspricht einer einzelnen Eigenschaft eines Objekts basierend auf der angegebenen Bedingung. |
| Parametertoken | <parameter name>:„<value>“ Übergibt einen Parameter von <parameter name> an den aufgerufenen Vorgang. Der Parameter kann je nach Parameter während der CimIQL-Vorverarbeitung oder vom CIMOM per Anforderung verbraucht werden. |
Eigenschaftstoken
- Gibt an, welche Eigenschaften für jedes Objekt des endgültigen Ergebnissatzes zurückgegeben werden sollen.
- Der Platzhalter * gibt alle verfügbaren Eigenschaften zurück. Andernfalls wird jeder gewünschte Eigenschaftsname in einer kommagetrennten Liste angegeben.
- Dieses Token ist am Ende jeder Anweisung erforderlich.
- Beispiel:
CIM_ComputerSystem[0].*
Trennzeichen-Token Abfragen
- Trennt Abfragen.
- Beispiel:
CIM_ComputerSystem.PrimaryOwnerContact
Indextoken
- Reduziert die Ergebnisse einer vorhergehenden Abfrage auf ein einzelnes Objekt im angegebenen ganzzahligen Index.
- Dieses Token ist immer optional.
- Beispiel:
CIM_ComputerSystem[0].*
Schlüsseltoken
- Stimmt mit einer als Schlüssel festgelegten Objekteigenschaft anhand des genauen Werts überein.
- Der <key name> ist der Name der Eigenschaft, die als Schlüssel verwendet wird.
- Beispiel:
CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*
Bedingungstoken
- Entspricht einer einzelnen Eigenschaft eines Objekts basierend auf der angegebenen Bedingung.
- Der <property name> ist der Name der Eigenschaft, mit der abgeglichen werden soll.
- Der <conditional operator> bestimmt, wie der ist-Wert der Eigenschaft mit dem erwarteten Wert verglichen wird. Die verfügbaren Operatoren sind Gleichheit (=) und Ungleichheit (!=).
- Die <enclosed value> muss eine der folgenden sein:
- Literaler Wert, der in einfache Anführungszeichen „ ...“ eingeschlossen ist. Beispiel: Foo='bar'
- Regulärer Ausdruck, eingeschlossen von einem Schrägstrich-Paar / ... /. Beispiel: Foo=/bar.*/
- Beispiel:
CIM_ComputerSystem{{Name!='runtime'}}.*
Parametertoken
- Übergibt einen Parameter von <parameter name> an den aufgerufenen Vorgang. Der Parameter kann je nach Parameter während der CimIQL-Vorverarbeitung oder vom Objektmanager für allgemeine Informationsmodelle (Common Information Model Object Manager, CIMOM) per Anforderung verbraucht werden.
- Beispiel:
CIM_ComputerSystem.CIM_RunningOS{{ResultClass:'Win32_ComputerSystem'}}.*
CimIQL-Tutorial
Dies ist ein Beispielprogramm, in dem jedes Beispiel auf dem vorherigen Beispiel aufbaut.
| Bestellung | CimIQL-Anweisung | Ergebnis |
|---|---|---|
| 1 | CIM_Computersystem[0].* | Ruft ab Erstes Ergebnis Aller Instanzen von CIM_ComputerSystem und seinen untergeordneten Elementen. Ruft alle ab Eigenschaften . |
| 2 | CIM_Computersystem.PrimaryBesitzerKontakt | Ruft alle Instanzen von CIM_ComputerSystem und ihre untergeordneten Elemente ab. Ruft nur einen ab Eigenschaft , PrimaryOwnerContact. |
| 3 | CIM_Computersystem{CreationClassName='Linux_Computersystem',Name='Runtime'}.* | Ruft eine einzelne eindeutige Instanz von CIM_ComputerSystem und seinen untergeordneten Elementen ab. Alle Schlüssel-Token Muss innerhalb von { } angegeben werden Identitätstoken . |
| 4 | CIM_Computersystem{{Name!='Runtime'}.* | Ruft alle Instanzen und untergeordneten Elemente von CIM_Computersystem ab, die keinen Namen haben Eigenschaft Von „Laufzeit“. Die Filtertoken {{ }} filtert Instanzen heraus, die nicht alle angegebenen Eigenschaften/Schlüssel enthalten. |
| 5 | CIM_Computersystem{{Name=/^Run.*$/}}.* | Ruft alle Instanzen und untergeordneten Elemente von CIM_Computersystem ab, deren Wert dem regulären Ausdruck entspricht, der in den / /-Zeichen enthalten ist.
Hinweis: Der reguläre Ausdruck erfordert keine einfachen Anführungszeichen. Die Filtertoken {{ }} filtert Instanzen heraus, die nicht alle angegebenen Eigenschaften/Schlüssel enthalten. |
| 6 | CIM_Computersystem{{Name='Runtime'}[2].* | Ruft ab Zweites Ergebnis Aller Instanzen von CIM_ComputerSystem und seinen untergeordneten Elementen Wo Die Instanzen haben den Eigenschaftsnamen „Laufzeit“. Die Reihenfolge der Vorgänge folgt der Abfragesyntax.
|
| 7 | CIM_Computersystem.CIM_RunningOS[0].Name | Ruft den Namen ab Eigenschaft Für die erste CIM_OperatingSystem-Instanz jeder CIM_Computersystem-Instanz. Das Middle-Token, CIM_RunningOS, ist der Name von Zuordnungsklasse , Nicht das Endergebnis. |
| 8 | CIM_Computersystem.CIM_RunningOS{{Name=/CentOS/}}[0].Name | Ruft den Namen ab Eigenschaft Für die erste CIM_OperatingSystem-Instanz jeder CIM_Computersystem-Instanz, Wo Jede Instanz „CIM_OperatingSystem“ hat eine Namenseigenschaft, die „CentOS“ enthält. |
CimIQL-Ergebnisse
CIM-Testergebnisse werden als XML-Dokument, das in eingebettet ist, an den Probe-Sensor übergeben <output>Element.
<!-- document root -->
<cimqueryset>
<!-- A single query and query result. Multiple <cimquery> tags may be provided. -->
<cimquery>
<!-- The original query, enclosed by CDATA. -->
<query><!CDATA[[>CIM_ComputerSystem[0].PrimaryOwnerContact<! ]]></query>
<!-- The resulting data is enclosed within a single <result> tag. -->
<result>
<!-- A single class instance result. Multiple <instance> tags may be provided.
Special tags are prefixed with an underscore character. -->
<instance>
<!-- The instance's CIM classname -->
<_classname>Linux_ComputerSystem</_classname>
<!-- A set of this instances identifying keys. Always provided, regardless of property filters.
Within here, each key is provided as <KeyName>VALUE</KeyName> with the VALUE enclosed as CDATA. -->
<_key>
<CreationClassName><![CDATA[Linux_ComputerSystem]]></CreationClassName>
<Name><![CDATA[runtime]]></Name>
</_key>
<!-- Each property that matches the query's property filter will be provided here, in the same format as keys;
As <PropertyName>VALUE<PropertyName> where VALUE is enclosed as CDATA -->
<PrimaryOwnerContact><![CDATA[root@runtime]]></PrimaryOwnerContact>
</instance>
</result>
</cimquery>
</cimqueryset>