Dela via


Stöd för reguljära uttryck i System Center Operations Manager

När du skapar hanteringspaket kan du behöva inkludera matchning av reguljära uttryck i identifieringar och grupper. Reguljära uttryck kan också vara nödvändiga för mönstermatchning i uttrycksvillkor i övervakare och regler.

Ursprunglig produktversion: System Center Operations Manager
Ursprungligt KB-nummer: 2702651

Operations Manager stöder två olika typer av reguljära uttryck. Du måste veta vilket element du arbetar i för att kunna välja rätt uttryck. Beräknings- och uttrycksfilter för gruppmedlemskap använder distinkt olika syntaxer för mönstermatchning.

Gruppberäkning

Gruppberäkning använder PERL syntax för reguljära uttryck. Som standard är matchningen skiftlägeskänslig, men du kan ange att ett uttryck måste vara skiftlägeskänsligt med hjälp av ett särskilt attribut i XML-koden. Mer information finns i SimpleCriteriaType.

Gruppberäkning hittas i hanteringspaketet (MP) när du använder modulen Group Calc . Uttrycket GroupCalc använder operatorn MatchesRegularExpression för att skapa dynamiskt gruppmedlemskap baserat på mönstermatchningsuttryck. Implementeringen av den här operatorn skickar uttrycket som finns i MP XML till SQL-anropsnamnet dbo.fn_MatchesRegularExpression . Om det här anropet returnerar värdet 0 är matchningen false. Om den returnerar värdet 1 är matchningen sann.

Viktigt

SJÄLVA SQL-anropsnamnet dbo.fn_MatchesRegularExpression är skiftlägeskänsligt, så operatorn MatchesRegularExpression som används i kriterier för dynamiskt gruppmedlemskap är också skiftlägeskänslig.

GroupCalc stöder också två särskilda underelement som gör abstrakta uttryck för följande vanliga regex-stilfrågor.

Specialfunktioner för GroupCalc

GroupCalc-underelement MP-uttryck Regex-motsvarighet
ContainsSubstring ^*{O}.*$ (Där {O} ersätts av delsträngen)
MatchesWildcard ? .
MatchesWildcard * .*
MatchesWildcard # [0-9]

Obs!

Om någon av dessa två särskilda operatorer används är utvärderingen alltid skiftlägeskänslig.

Matchningsvillkor för uttrycksfilter

Uttrycksfilter som används i hanteringspaket använder .NET Framework regex-uttryckssyntax. Alla uttryck fungerar inte. Följande .NET Framework syntaxelement för reguljära uttryck stöds dock. Uttrycksfilter finns i hanteringspaketet när du använder expression Eval-modulen.

Operations Manager regex-syntax

Konstruera Operations Manager regex
Alla tecken .
Tecken i intervall [ ]
Tecken som inte finns i intervallet [^ ]
Början av raden ^
Radslut $
Eller |
Grupp ( )
0 eller 1 matchning ?
0 eller fler matchningar *
1 eller fler matchningar +
Exakt N-matchningar {n}
Minst N matchningar {n, }
Högst N matchningar { , n}
N till M-matchningar {n, m}
Nytt linjetecken \n
Tabbtecken \T

Exempel på reguljära operations Manager-uttryck (regex)

Exempel 1

Sök efter matchningar som innehåller en enda sträng, string1:

^(string1)$

Exempel 2

Sök efter matchningar som innehåller någon av de två strängarna, string1 eller string2:

^(string1)|^(string2)$

Exempel 3

Sök efter matchningar till mappar som finns rekursivt under de två mappsökvägarna, (/var/lib/string1/* eller /var/lib/string2/*):

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

Exempel 4

Sök efter matchningar som innehåller någon av de två strängarna eller Agent1.contoso.comAgent2.contoso.com (skiftlägesokänslig):

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

Sök efter matchningar som innehåller Agent (skiftlägesokänsliga):

^(?i)(agent.*)$

Reguljära uttryck via SDK

Operations Manager SDK har operatorn Matchningsvillkor för filtrering av objekt. Den här operatorn använder samma funktioner som i GroupCalc-fallet som MatchesCriteria nämndes tidigare.

När du använder SDK för att skapa ett villkorsuttryck för att hitta objekt i Operations Manager-databasen är följande syntaxelement giltiga och användbara:

  • Jämförelseoperatorer
  • Jokertecken
  • DateTime-värden
  • Jämförelse av heltal till XML-uppräkning

Jämförelseoperatorer

Du kan använda jämförelseoperatorer när du skapar ett villkorsuttryck. Giltiga operatorer beskrivs i följande tabell.

SDK-jämförelseoperatorer

Operatör Beskrivning Exempel
=, == Utvärderas till sant om de vänstra och högra operanderna är lika. Name = 'mymachine.contoso.com'
!=, <> Utvärderas till sant om de vänstra och högra operanderna är ojämlika. Name != 'mymachine.contoso.com'
> Utvärderas till sant om den vänstra operanden är större än den högra operanden. Severity > 0
< Utvärderas till sant om den vänstra operanden är mindre än den högra operanden. Severity < 2
>= Utvärderas till sant om den vänstra operanden är större än eller lika med den högra operanden. Severity >= 1
<= Utvärderas till sant om den vänstra operanden är mindre än eller lika med den högra operanden. Severity <= 3
LIKE Utvärderas till sant om den vänstra operanden matchar det mönster som definieras av den högra operanden. Använd tecknen i jokerteckentabellen för att definiera mönstret. Name 'LIKE SQL%'
Utvärderas till sant om värdet Name är SQLEngine.

Name LIKE '%SQL%'
Utvärderas till sant om Name värdet är MySQLEngine.
MATCHER Utvärderas till sant om den vänstra operanden matchar det reguljära uttrycket som definieras av den högra operanden. Name MATCHES 'SQL*05'
Utvärderas till sant om värdet Name är SQL2005.
ÄR NULL Utvärderas till sant om värdet för den vänstra operanden är null. ConnectorId IS NULL
Utvärderas till sant om ConnectorId egenskapen inte innehåller något värde.
ÄR INTE NULL Utvärderas till sant om värdet för den vänstra operanden inte är null. ConnectorId IS NOT NULL
Utvärderas till sant om ConnectorId egenskapen innehåller ett värde.
I Utvärderas till sant om värdet för den vänstra operanden finns i listan över värden som definieras av den högra operanden.

ObserveraIN-operatorn är endast giltig för användning med egenskaper av typen Guid.
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002')
Utvärderas till sant om värdet för Id egenskapen är en av de två globalt unika identifierare som anges i uttrycket.
och Utvärderas till sant om båda operanderna till vänster och höger är sanna. Name = 'SQL%' AND Description LIKE 'MyData%'
ELLER Utvärderas till sant om antingen den vänstra eller högra operanden är sann. Name = 'SQL%' OR Description LIKE 'MyData%'
INTE Utvärderas till sant om rätt operande inte är sann. NOT (Name = 'IIS' OR Name = 'SQL')

Jokertecken

I följande tabell definieras jokertecken som du kan använda för att skapa ett mönster när du använder operatorn LIKE .

Jokerteckenoperatorer som används med LIKE-operatorn

Jokertecken Beskrivning Exempel
% Ett jokertecken som matchar valfritt antal tecken. Name LIKE 'SQL%'
Utvärderas till sant om värdet Name är SQLEngine.

Name LIKE '%SQL%'
Utvärderas till sant om Name värdet är MySQLEngine.
_ Ett jokertecken som matchar ett enda tecken. Name LIKE 'SQL200_'
Utvärderas till sant för följande Name värden:

SQL2000
SQL2005

Obs! Uttrycket utvärderas som falskt för SQL200 eftersom symbolen _ måste matcha exakt ett tecken i Name värdet.
[] Ett jokertecken som matchar ett tecken som omges av teckenuppsättningen.

Observera Hakparenteser används också när du kvalificerar referenser till MonitoringObject-egenskaper . Mer information finns i Definiera frågor för övervakningsobjekt.
Name LIKE 'SQL200[05]'
Utvärderas till sant för följande Name värden:

SQL2000
SQL2005

Uttrycket utvärderas till false för SQL2003.
[^] Ett jokertecken som matchar ett tecken som inte omges av teckenuppsättningen. Name LIKE 'SQL200[^05]'
Utvärderas till sant för SQL2003.

Uttrycket utvärderas till false för SQL2000 och SQL2005.

DateTime-jämförelser

När du använder ett DateTime-värde i ett frågeuttryck använder du det allmänna DateTime-formatet (G) för att konvertera DateTime värdet till ett strängvärde. Till exempel:

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

Konvertera alla datumvärden till G-format (GMT) för att göra giltiga strängjämförelser.

Jämförelse av heltalsvärde med uppräkningar

När du använder ett heltalsuppräkningsvärde i ett frågeuttryck omvandlar du uppräkningsvärdet till ett heltal.

Till exempel:

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

Mer information