Unterstützung regulärer Ausdrücke in System Center Operations Manager
Wenn Sie Management Packs erstellen, müssen Sie möglicherweise den Abgleich regulärer Ausdrücke 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 von regulären Ausdrücken. Sie müssen wissen, in welchem Element Sie arbeiten, um den richtigen Ausdruck auswählen zu können. Gruppenmitgliedschaftsberechnung und Ausdrucksfilter verwenden eindeutig unterschiedliche Syntaxen für den Musterabgleich.
Gruppenberechnung
Bei der Gruppenberechnung wird die Syntax für reguläre Ausdrücke verwendet PERL
. Standardmäßig wird beim Abgleich die Groß-/Kleinschreibung nicht 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 wird in Ihrem Management Pack (MP) gefunden, 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 enthalten ist, an den dbo.fn_MatchesRegularExpression
SQL-Aufrufnamen. Wenn dieser Aufruf den Wert 0 zurückgibt, ist die Übereinstimmung false. Wenn der Wert 1 zurückgegeben wird, ist die Übereinstimmung true.
Wichtig
Beim dbo.fn_MatchesRegularExpression
SQL-Aufrufnamen selbst wird die Groß-/Kleinschreibung beachtet, sodass bei dem operator, der MatchesRegularExpression
in dynamischen Gruppenmitgliedschaftskriterien verwendet wird, auch die Groß-/Kleinschreibung beachtet wird.
GroupCalc unterstützt auch zwei spezielle Unterelemente, die abstrakte Ausdrücke der folgenden allgemeinen Abfragen im RegEx-Stil erstellen.
Spezielle GroupCalc-Funktionen
GroupCalc-Unterelement | MP-Ausdruck | RegEx-Entsprechung |
---|---|---|
ContainsSubstring | ^*{O}.*$ (Wobei {O} durch die Teilzeichenfolge ersetzt wird) |
|
MatchesWildcard | ? |
. |
MatchesWildcard | * |
.* |
MatchesWildcard | # |
[0-9] |
Hinweis
Wenn einer dieser beiden speziellen Operatoren verwendet wird, wird bei der Auswertung immer die Groß-/Kleinschreibung beachtet.
Abgleichskriterien für Ausdrucksfilter
Ausdrucksfilter, die in Management Packs verwendet werden, verwenden .NET Framework Ausdruckssyntax. Nicht alle Ausdrücke funktionieren. Die folgenden .NET Framework Syntaxelemente für reguläre Ausdrücke werden jedoch unterstützt. Ausdrucksfilter sind in Ihrem Management Pack vorhanden, wenn Sie das Ausdrucksval-Modul verwenden.
Operations Manager-RegEx-Syntax
Erstellen | Operations Manager regex |
---|---|
Beliebiges Zeichen | . |
Zeichen im Bereich | [ ] |
Zeichen nicht im Bereich | [^ ] |
Zeilenanfang | ^ |
Zeilenende | $ |
Oder | | |
Gruppe | ( ) |
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-M-Übereinstimmungen | {n, m} |
Zeilenumbruchzeichen | \n |
Tabulatorzeichen | \t |
Beispiele für reguläre Ausdrücke (RegEx) in Operations Manager
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 (/var/lib/string1/*
oder /var/lib/string2/*
) befinden:
^(\/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 enthalten Agent
(Groß-/Kleinschreibung wird nicht beachtet):
^(?i)(agent.*)$
Reguläre Ausdrücke über DAS SDK
Das Operations Manager SDK verfügt über einen Übereinstimmungskriterienoperator zum Filtern von Objekten. Dieser Operator verwendet die gleiche Funktionalität wie MatchesCriteria
im zuvor erwähnten GroupCalc-Fall.
Wenn Sie das SDK zum Erstellen eines Kriterienausdrucks zum Suchen von Objekten in der Operations Manager-Datenbank verwenden, sind die folgenden Syntaxelemente gültig und nützlich:
- Vergleichsoperatoren
- Wildcardzeichen
- DateTime-Werte
- Vergleiche von Integer-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(en) |
---|---|---|
=, == | Wird als true ausgewertet, wenn die linken und rechten Operanden gleich sind. | Name = 'mymachine.contoso.com' |
!=, <> | Wird als true ausgewertet, wenn die linken und rechten Operanden ungleich sind. | Name != 'mymachine.contoso.com' |
> | Wird als true ausgewertet, wenn der linke Operand größer als der rechte Operand ist. | Severity > 0 |
< | Wird als true ausgewertet, wenn der linke Operand kleiner als der rechte Operand ist. | Severity < 2 |
>= | Wird als true ausgewertet, wenn der linke Operand größer oder gleich dem rechten Operanden ist. | Severity >= 1 |
<= | Wird als true ausgewertet, wenn der linke Operand kleiner oder gleich dem rechten Operanden ist. | Severity <= 3 |
WIE | Wird als true ausgewertet, wenn der linke Operand mit dem Muster übereinstimmt, das vom rechten Operanden definiert wird. Verwenden Sie die Zeichen in der Wildcardtabelle , um das Muster zu definieren. | Name 'LIKE SQL%' Wird als TRUE ausgewertet, wenn der Name Wert SQLEngine ist. Name LIKE '%SQL%' Wird als true ausgewertet, wenn der Name Wert MySQLEngine ist. |
ÜBEREINSTIMMUNGEN | Wird als TRUE ausgewertet , wenn der linke Operand mit dem regulären Ausdruck übereinstimmt, der vom rechten Operanden definiert wird. | Name MATCHES 'SQL*05' Wird als TRUE ausgewertet, wenn der Name Wert SQL2005 ist. |
IS NULL | Wird als true ausgewertet, wenn der Wert des linken Operanden NULL ist. | ConnectorId IS NULL Wird als true ausgewertet, wenn die ConnectorId Eigenschaft keinen Wert enthält. |
IST NICHT NULL | Wird als true ausgewertet, wenn der Wert des linken Operanden nicht NULL ist. | ConnectorId IS NOT NULL Wird als true ausgewertet, wenn die ConnectorId Eigenschaft einen Wert enthält. |
IN | Wird als true ausgewertet, wenn sich der Wert des linken Operanden in der Liste der Werte befindet, die vom rechten Operanden definiert werden. 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') Wird als true ausgewertet, wenn der Wert der Id Eigenschaft einer der beiden global eindeutigen Bezeichner ist, die im Ausdruck bereitgestellt werden. |
UND | Wird als true ausgewertet, wenn die linken und rechten Operanden true sind. | Name = 'SQL%' AND Description LIKE 'MyData%' |
ODER | Wird als TRUE ausgewertet, wenn der linke oder rechte Operand true ist. | Name = 'SQL%' OR Description LIKE 'MyData%' |
NOT | Wird als true ausgewertet, wenn der rechte Operand nicht true ist. | NOT (Name = 'IIS' OR Name = 'SQL') |
Platzhalter
In der folgenden Tabelle werden die Wildcardzeichen definiert, die Sie verwenden können, um ein Muster zu erstellen, wenn Sie den LIKE
Operator verwenden.
Mit dem LIKE-Operator verwendete Wildcard-Operatoren
Platzhalter | Beschreibung | Beispiel |
---|---|---|
% | Ein Platzhalter, der einer beliebigen Anzahl von Zeichen entspricht. | Name LIKE 'SQL%' Wird als TRUE ausgewertet, wenn der Name Wert SQLEngine ist. Name LIKE '%SQL%' Wird als true ausgewertet, wenn der Name Wert MySQLEngine ist. |
_ | Ein Wildcard, der mit einem einzelnen Zeichen übereinstimmt. | Name LIKE 'SQL200_' Wird für die folgenden Name Werte als true ausgewertet:SQL2000 SQL2005 Hinweis: Der Ausdruck wird für SQL200 als false ausgewertet, da das Symbol _ genau mit einem Zeichen im Name Wert übereinstimmen muss. |
[] | Ein Wildcard, der einem beliebigen Zeichen entspricht, das im Zeichensatz eingeschlossen ist. Hinweis Klammern werden auch verwendet, wenn Verweise auf MonitoringObject-Eigenschaften qualifiziert werden. Weitere Informationen finden Sie unter Definieren von Abfragen für Überwachungsobjekte. |
Name LIKE 'SQL200[05]' Wird für die folgenden Name Werte als true ausgewertet:SQL2000 SQL2005 Der Ausdruck ergibt für SQL2003false. |
[^] | Ein Wildcard, der mit einem Zeichen übereinstimmt, das nicht in den Zeichensatz eingeschlossen ist. | Name LIKE 'SQL200[^05]' Wird für SQL2003 als true ausgewertet. Der Ausdruck ergibt für SQL2000 und SQL2005false. |
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 durchzuführen.
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für