Freigeben über


Unterstützung regulärer Ausdrücke in System Center Operations Manager

Wenn Sie Management Packs erstellen, müssen Sie möglicherweise einen regulären Ausdrucksabgleich in Ermittlungen und Gruppen einschließen. Reguläre Ausdrücke können auch für den Musterabgleich in Ausdruckskriterien in Monitoren und Regeln erforderlich sein.

Ursprüngliche Produktversion: System Center Operations Manager
Ursprüngliche KB-Nummer: 2702651

Operations Manager unterstützt zwei verschiedene Typen regulärer Ausdrücke. Sie müssen wissen, in welchem Element Sie arbeiten, um den richtigen Ausdruck auswählen zu können. Berechnung von Gruppenmitgliedschaften und Ausdrucksfiltern verwenden für den Musterabgleich unterschiedliche Syntaxen.

Gruppenberechnung

Die Gruppenberechnung verwendet PERL die Syntax regulärer Ausdrücke. Standardmäßig wird bei dem Abgleich die Groß-/Kleinschreibung beachtet. Sie können jedoch angeben, dass bei einem Ausdruck die Groß-/Kleinschreibung beachtet werden muss, indem Sie ein spezielles Attribut im XML-Code verwenden. Weitere Informationen finden Sie unter SimpleCriteriaType.

Die Gruppenberechnung befindet sich in Ihrem Management Pack (MP), wenn Sie das Group Calc Modul verwenden. Der GroupCalc Ausdruck verwendet den MatchesRegularExpression Operator, um eine dynamische Gruppenmitgliedschaft basierend auf Musterabgleichsausdrücken zu erstellen. Die Implementierung dieses Operators übergibt den Ausdruck, der im MP-XML-Code enthalten ist, an den NAMEN des dbo.fn_MatchesRegularExpression SQL-Aufrufs. Wenn dieser Aufruf den Wert 0 zurückgibt, ist die Übereinstimmung "false". Wenn ein Wert von 1 zurückgegeben wird, ist die Übereinstimmung wahr.

Wichtig

Bei dbo.fn_MatchesRegularExpression dem SQL-Aufrufnamen selbst wird die Groß-/Kleinschreibung beachtet, sodass der MatchesRegularExpression in den Kriterien für die dynamische Gruppenmitgliedschaft verwendete Operator auch die Groß-/Kleinschreibung beachtet.

GroupCalc unterstützt auch zwei spezielle Unterelemente, die abstrakte Ausdrücke der folgenden allgemeinen regex-Formatabfragen darstellen.

GroupCalc-Sonderfunktionen

GroupCalc-Unterelement MP-Ausdruck Regex-Entsprechung
ContainsSubstring ^*{O}.*$ (Wherein {O} wird durch die Teilzeichenfolge ersetzt)
MatchesWildcard ? .
MatchesWildcard * .*
MatchesWildcard # [0-9]

Notiz

Wenn eine dieser beiden speziellen Operatoren verwendet wird, wird bei der Auswertung immer die Groß-/Kleinschreibung beachtet.

Kriterien für den Ausdrucksfilterabgleich

Ausdrucksfilter, die in Management Packs verwendet werden, verwenden die Regex-Ausdruckssyntax .NET Framework. Nicht alle Ausdrücke funktionieren. Die folgenden Syntaxelemente für reguläre Ausdrücke von .NET Framework werden jedoch unterstützt. Ausdrucksfilter sind in Ihrem Management Pack vorhanden, wenn Sie das Ausdrucks-Eval-Modul verwenden.

Operations Manager regex-Syntax

Konstrukt Operations Manager regex
Beliebiges Zeichen .
Zeichen im Bereich [ ]
Zeichen nicht im Bereich [^ ]
Zeilenanfang ^
Zeilenende $
Oder |
Group ( )
0 oder 1 Übereinstimmung ?
0 oder mehr Übereinstimmungen *
1 oder mehr Übereinstimmungen +
Genau N-Übereinstimmungen {n}
Mindestens N Übereinstimmungen {n,}
Höchstens N-Übereinstimmungen { , n}
N bis M Übereinstimmungen {n, m}
Neue-Zeile-Zeichen \n
Tabstoppzeichen \t

Beispiele für reguläre Ausdrücke im Operations Manager (regex)

Beispiel 1

Suchen Sie nach Übereinstimmungen, die eine einzelne Zeichenfolge enthalten: string1

^(string1)$

Beispiel 2

Suchen Sie nach Übereinstimmungen, die eine der beiden Zeichenfolgen enthalten, string1 oder string2:

^(string1)|^(string2)$

Beispiel 3

Suchen Sie nach Übereinstimmungen mit Ordnern, die sich rekursiv unter den beiden Ordnerpfaden befinden (/var/lib/string1/* oder /var/lib/string2/*):

^(\/var\/lib\/string1\/.*)|^(\/var\/lib\/string2\/.*)$

Beispiel 4

Suchen Sie nach Übereinstimmungen, die eine der beiden Zeichenfolgen enthalten, Agent1.contoso.com oder Agent2.contoso.com (Groß-/Kleinschreibung wird nicht beachtet):

^(?i)(agent1.contoso.com)|(?i)(agent2.contoso.com)$

Suchen Sie nach Übereinstimmungen, die die Groß-/Kleinschreibung enthalten Agent (Groß-/Kleinschreibung wird nicht beachtet):

^(?i)(agent.*)$

Reguläre Ausdrücke über SDK

Das Operations Manager SDK verfügt über einen "Matches "-Kriterienoperator zum Filtern von Objekten. Dieser Operator verwendet die gleiche Funktionalität wie MatchesCriteria im zuvor erwähnten GroupCalc-Fall.

Wenn Sie mit dem SDK einen Kriterienausdruck erstellen, um Objekte in der Operations Manager-Datenbank zu finden, sind die folgenden Syntaxelemente gültig und nützlich:

  • Vergleichsoperatoren
  • Wildcardzeichen
  • DateTime-Werte
  • Vergleiche von ganzzahligen zu XML-Enumerationen

Vergleichsoperatoren

Sie können Vergleichsoperatoren verwenden, wenn Sie einen Kriterienausdruck erstellen. Die gültigen Operatoren werden in der folgenden Tabelle beschrieben.

SDK-Vergleichsoperatoren

Operator Beschreibung Beispiel(e)
=, == Wertet " true " aus, wenn die linken und rechten Operanden gleich sind. Name = 'mymachine.contoso.com'
!=, <> Wertet " true " aus, wenn die linken und rechten Operanden ungleich sind. Name != 'mymachine.contoso.com'
> Wertet " true " aus, wenn der linke Operand größer als der rechte Operand ist. Severity > 0
< Wertet " true " aus, wenn der linke Operand kleiner als der rechte Operand ist. Severity < 2
>= Wertet " true " aus, wenn der linke Operand größer oder gleich dem rechten Operanden ist. Severity >= 1
<= Wertet " true " aus, wenn der linke Operand kleiner oder gleich dem rechten Operanden ist. Severity <= 3
LIKE Wertet " true " aus, wenn der linke Operand mit dem Muster übereinstimmt, das vom rechten Operanden definiert ist. Verwenden Sie die Zeichen in der Wildcardtabelle , um das Muster zu definieren. Name 'LIKE SQL%'
Wertet auf "true" aus, wenn der Name Wert "SQLEngine" ist.

Name LIKE '%SQL%'
Wertet "true" aus, wenn der Name Wert "MySQLEngine" ist.
ÜBEREINSTIMMUNGEN Wertet " true " aus, wenn der linke Operand mit dem vom rechten Operanden definierten regulären Ausdruck übereinstimmt. Name MATCHES 'SQL*05'
Wertet "true" aus, wenn der Name Wert SQL2005 ist.
IS NULL Wertet " true " aus, wenn der Wert des linken Operanden null ist. ConnectorId IS NULL
Wertet auf "true ", wenn die ConnectorId Eigenschaft keinen Wert enthält.
IS NOT NULL Wertet " true " aus, wenn der Wert des linken Operanden nicht NULL ist. ConnectorId IS NOT NULL
Wertet " true " aus, wenn die ConnectorId Eigenschaft einen Wert enthält.
IN Wertet " true " aus, wenn sich der Wert des linken Operanden in der Liste der werte befindet, die vom rechten Operanden definiert sind.

Hinweis Der IN-Operator ist nur für Die Verwendung mit Eigenschaften vom Typ GUID gültig.
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002')
Wertet " true " aus, wenn der Wert der Id Eigenschaft einer der beiden global eindeutigen Bezeichner ist, die im Ausdruck bereitgestellt werden.
UND Wertet " true " aus, wenn die linken und rechten Operanden beide wahr sind. Name = 'SQL%' AND Description LIKE 'MyData%'
ODER Wertet " true " aus, wenn entweder der linke oder der rechte Operand wahr ist. Name = 'SQL%' OR Description LIKE 'MyData%'
NOT Wertet auf "true " aus, wenn der richtige Operand nicht wahr ist. NOT (Name = 'IIS' OR Name = 'SQL')

Platzhalter

In der folgenden Tabelle werden die Wildcardzeichen definiert, mit denen Sie ein Muster erstellen können, wenn Sie den LIKE Operator verwenden.

Mit LIKE-Operatoren verwendete Wildcardoperatoren

Platzhalter Beschreibung Beispiel
% Ein Platzhalter, der einer beliebigen Anzahl von Zeichen entspricht. Name LIKE 'SQL%'
Wertet auf "true" aus, wenn der Name Wert "SQLEngine" ist.

Name LIKE '%SQL%'
Wertet "true" aus, wenn der Name Wert "MySQLEngine" ist.
_ Ein Wildcard, der einem einzelnen Zeichen entspricht. Name LIKE 'SQL200_'
Ergibt "true" für die folgenden Name Werte:

SQL2000
SQL2005

Hinweis: Der Ausdruck wird für SQL200 als falsch ausgewertet, da das Symbol _ genau einem Zeichen im Name Wert entsprechen muss.
[] Ein Wildcard, der einem beliebigen Zeichen entspricht, das in den Zeichensatz eingeschlossen ist.

Hinweisklammern werden auch beim Qualifizieren von Verweisen auf MonitoringObject-Eigenschaften verwendet. Weitere Informationen finden Sie unter Definieren von Abfragen für Überwachungsobjekte.
Name LIKE 'SQL200[05]'
Ergibt "true" für die folgenden Name Werte:

SQL2000
SQL2005

Der Ausdruck wird für SQL2003 auf "false" ausgewertet.
[^] Ein Wildcard, der einem beliebigen Zeichen entspricht, das nicht in den Zeichensatz eingeschlossen ist. Name LIKE 'SQL200[^05]'
Wertet für SQL2003 auf "true" aus.

Der Ausdruck wird für SQL2000 und SQL2005 auf "false" ausgewertet.

DateTime-Vergleiche

Wenn Sie einen DateTime-Wert in einem Abfrageausdruck verwenden, verwenden Sie das allgemeine DateTime-Format (G), um den DateTime Wert in einen Zeichenfolgenwert zu konvertieren. Zum Beispiel:

string qStr = "TimeCreated <= '" + myInstant.ToString("G") + "'";
ManagementPackCriteria mpCriteria = new ManagementPackCriteria(qStr);

Konvertieren Sie alle Datumswerte in das G-Format (GMT), um gültige Zeichenfolgenvergleiche vorzunehmen.

Ganzzahliger Wertvergleich mit Enumerationen

Wenn Sie einen ganzzahligen Enumerationswert in einem Abfrageausdruck verwenden, wandeln Sie den Enumerationswert in eine ganze Zahl um.

Zum Beispiel:

string qStr = "Severity > " + (int)ManagementPackAlertSeverity.Warning;
MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);

Weitere Informationen