Delen via


Ondersteuning voor reguliere expressies in System Center Operations Manager

Wanneer u management packs ontwerpt, moet u mogelijk reguliere expressiekoppelingen opnemen in ontdekkingen en groepen. Reguliere expressies kunnen ook nodig zijn voor patroonkoppeling in expressiecriteria in monitors en regels.

Oorspronkelijke productversie: System Center Operations Manager
Oorspronkelijk KB-nummer: 2702651

Operations Manager ondersteunt twee verschillende typen reguliere expressies. U moet weten in welk element u werkt om de juiste expressie te kunnen kiezen. Berekenings- en expressiefilters voor groepslidmaatschappen gebruiken duidelijk verschillende syntaxis voor patroonkoppeling.

Groepsberekening

Groepsberekening maakt gebruik van PERL de syntaxis van de reguliere expressie. Standaard is de overeenkomst niet hoofdlettergevoelig, maar u kunt opgeven dat een expressie hoofdlettergevoelig moet zijn met behulp van een speciaal kenmerk in de XML. Zie SimpleCriteriaType voor meer informatie.

Groepsberekening vindt u in uw management pack (MP) wanneer u de Group Calc module gebruikt. De GroupCalc expressie gebruikt de MatchesRegularExpression operator om dynamisch groepslidmaatschap te maken op basis van patroonkoppelingsexpressies. De implementatie van deze operator geeft de expressie die in de MP XML is gevonden door aan de naam van de dbo.fn_MatchesRegularExpression SQL-aanroep. Als deze aanroep een waarde van 0 retourneert, is de overeenkomst onwaar. Als er een waarde van 1 wordt geretourneerd, is de overeenkomst waar.

Belangrijk

De naam van de dbo.fn_MatchesRegularExpression SQL-aanroep zelf is hoofdlettergevoelig, dus de MatchesRegularExpression operator die wordt gebruikt in dynamische criteria voor groepslidmaatschap, is ook hoofdlettergevoelig.

GroupCalc ondersteunt ook twee speciale subelementen die abstracte expressies maken van de volgende algemene regex-stijlquery's.

Speciale functies GroupCalc

Subelement GroupCalc MP-expressie Regex-equivalent
ContainsSubstring ^*{O}.*$ (Waarbij {O} wordt vervangen door de subtekenreeks)
MatchesWildcard ? .
MatchesWildcard * .*
MatchesWildcard # [0-9]

Notitie

Als een van deze twee speciale operators wordt gebruikt, is de evaluatie altijd hoofdlettergevoelig.

Overeenkomende criteria voor expressiefilters

Expressiefilters die in management packs worden gebruikt, maken gebruik van de syntaxis van de regex-expressie van .NET Framework. Niet alle expressies werken. De volgende .NET Framework-syntaxiselementen voor reguliere expressies worden echter ondersteund. Expressiefilters bestaan in uw management pack wanneer u de module Expression Eval gebruikt.

Regex-syntaxis van Operations Manager

Bouwen Operations Manager regex
Elk teken .
Teken in bereik [ ]
Teken niet in bereik [^ ]
Begin van regel ^
Einde van regel $
Or |
Groep ( )
0 of 1 overeenkomst ?
0 of meer overeenkomsten *
1 of meer overeenkomsten +
Exact N komt overeen {n}
Ten minste N-overeenkomsten {n, }
Bij de meeste N-overeenkomsten { , n}
N-naar-M-overeenkomsten {n, m}
Teken voor nieuwe regel \n
Tabteken \t

Voorbeelden van reguliere expressies (regex) van Operations Manager

Voorbeeld 1

Zoek naar overeenkomsten die één tekenreeks bevatten: string1

^(string1)$

Voorbeeld 2

Zoek naar overeenkomsten die een van de twee tekenreeksen bevatten, string1 of string2:

^(string1)|^(string2)$

Voorbeeld 3

Zoek naar overeenkomsten met mappen die zich recursief onder de twee mappaden bevinden, (/var/lib/string1/* of /var/lib/string2/*):

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

Voorbeeld 4

Zoek naar overeenkomsten die een van de twee tekenreeksen bevatten of Agent1.contoso.com Agent2.contoso.com (niet hoofdlettergevoelig):

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

Zoek naar overeenkomsten die niet hoofdlettergevoelig zijn Agent :

^(?i)(agent.*)$

Reguliere expressies via SDK

De Operations Manager SDK heeft een criteriumoperator Overeenkomsten voor het filteren van objecten. Deze operator gebruikt dezelfde functionaliteit als MatchesCriteria in de GroupCalc-case die eerder is vermeld.

Wanneer u de SDK gebruikt om een criteriumexpressie te maken om objecten in de Operations Manager-database te vinden, zijn de volgende syntaxiselementen geldig en nuttig:

  • Vergelijkingsoperators
  • Jokertekens
  • Datum/tijd-waarden
  • Vergelijkingen van gehele getallen naar XML-opsomming

Vergelijkingsoperators

U kunt vergelijkingsoperatoren gebruiken wanneer u een criteriumexpressie maakt. De geldige operators worden beschreven in de volgende tabel.

SDK-vergelijkingsoperatoren

Operator Beschrijving Voorbeeld(en)
=, == Evalueert waar als de linker- en rechteroperanden gelijk zijn. Name = 'mymachine.contoso.com'
!=, <> Evalueert waar als de linker- en rechteroperanden ongelijk zijn. Name != 'mymachine.contoso.com'
> Evalueert waar als de linkeroperand groter is dan de rechteroperand. Severity > 0
< Evalueert waar als de linkeroperand kleiner is dan de rechteroperand. Severity < 2
>= Evalueert waar als de linkeroperand groter is dan of gelijk is aan de rechteroperand. Severity >= 1
<= Evalueert waar als de linkeroperand kleiner is dan of gelijk is aan de rechteroperand. Severity <= 3
ALS Evalueert waar als de linkeroperand overeenkomt met het patroon dat is gedefinieerd door de rechteroperand. Gebruik de tekens in de jokertekentabel om het patroon te definiëren. Name 'LIKE SQL%'
Evalueert waar als de Name waarde SQLEngine is.

Name LIKE '%SQL%'
Evalueert waar als de Name waarde MySQLEngine is.
LUCIFERS Evalueert waar als de linkeroperand overeenkomt met de reguliere expressie die is gedefinieerd door de rechteroperand. Name MATCHES 'SQL*05'
Evalueert waar als de Name waarde SQL2005 is.
IS NULL Evalueert waar als de waarde van de linkeroperand null is. ConnectorId IS NULL
Evalueert waar als de ConnectorId eigenschap geen waarde bevat.
IS NOT NULL Evalueert waar als de waarde van de linkeroperand niet null is. ConnectorId IS NOT NULL
Evalueert waar als de ConnectorId eigenschap een waarde bevat.
IN Evalueert waar als de waarde van de linkeroperand zich in de lijst met waarden bevindt die zijn gedefinieerd door de rechteroperand.

Opmerking De IN-operator is alleen geldig voor gebruik met eigenschappen van het type Guid.
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002')
Evalueert waar als de waarde van de Id eigenschap een van de twee globaal unieke id's in de expressie is.
EN Evalueert waar als de linker- en rechteroperanden beide waar zijn. Name = 'SQL%' AND Description LIKE 'MyData%'
OF Evalueert waar als de linker- of rechteroperand waar is. Name = 'SQL%' OR Description LIKE 'MyData%'
NIET Evalueert waar als de juiste operand niet waar is. NOT (Name = 'IIS' OR Name = 'SQL')

Jokertekens

In de volgende tabel worden de jokertekens gedefinieerd die u kunt gebruiken om een patroon te maken wanneer u de LIKE operator gebruikt.

Jokertekenoperators die worden gebruikt met like-operator

Jokerteken Beschrijving Voorbeeld
% Een jokerteken dat overeenkomt met een willekeurig aantal tekens. Name LIKE 'SQL%'
Evalueert waar als de Name waarde SQLEngine is.

Name LIKE '%SQL%'
Evalueert waar als de Name waarde MySQLEngine is.
_ Een jokerteken dat overeenkomt met één teken. Name LIKE 'SQL200_'
Resulteert in waar voor de volgende Name waarden:

SQL2000
SQL2005

Opmerking: De expressie resulteert in onwaar voor SQL200 omdat het symbool _ exact één teken in de Name waarde moet overeenkomen.
[] Een jokerteken dat overeenkomt met een willekeurig teken dat is ingesloten in de tekenset.

Notitiehaken worden ook gebruikt bij het kwalificeren van verwijzingen naar eigenschappen van MonitoringObject . Zie Query's definiëren voor bewakingsobjecten voor meer informatie.
Name LIKE 'SQL200[05]'
Resulteert in waar voor de volgende Name waarden:

SQL2000
SQL2005

De expressie resulteert in onwaar voor SQL2003.
[^] Een jokerteken dat overeenkomt met een willekeurig teken dat niet in de tekenset staat. Name LIKE 'SQL200[^05]'
Resulteert in waar voor SQL2003.

De expressie resulteert in onwaar voor SQL2000 en SQL2005.

Datum/tijd-vergelijkingen

Wanneer u een DateTime-waarde in een query-expressie gebruikt, gebruikt u de algemene Datum/tijd-indeling (G) om de DateTime waarde te converteren naar een tekenreekswaarde. Bijvoorbeeld:

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

Converteer alle datumwaarden naar de G-indeling (GMT) om geldige tekenreeksvergelijkingen te maken.

Vergelijking van gehele getallen met opsommingen

Wanneer u een opsommingswaarde voor gehele getallen in een query-expressie gebruikt, cast u de opsommingswaarde naar een geheel getal.

Bijvoorbeeld:

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

Meer informatie