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. Filter för beräkning av gruppmedlemskap och uttryck 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 finns 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 dynamisk gruppmedlemskap är 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 |
---|---|---|
InnehållerSubstring | ^*{O}.*$ (Wherein {O} ersätts av delsträngen) |
|
MatchesWildcard | ? |
. |
MatchesWildcard | * |
.* |
MatchesWildcard | # |
[0-9] |
Kommentar
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 syntaxelement för reguljära .NET Framework-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 matchar | {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 uttryck i Operations Manager (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.com
Agent2.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 Matchar villkor 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 konstruera 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. De giltiga operatorerna 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 |
Tycka om | 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 Name värdet är SQLEngine. Name LIKE '%SQL%' Utvärderas till sant om Name värdet är MySQLEngine. |
TÄNDSTICKOR | Utvärderas till sant om den vänstra operanden matchar det reguljära uttryck 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 true om värdet för den vänstra operanden är null. | ConnectorId IS NULL Utvärderas till sant om egenskapen ConnectorId 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 true om egenskapen ConnectorId innehåller ett värde. |
IN | Utvärderas till sant om värdet för den vänstra operanden finns i listan över värden som definierats av den högra operanden. Obs! IN-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åde vänster och höger operander ä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%' |
NOT | Utvärderas till sant om rätt operande inte är sann. | NOT (Name = 'IIS' OR Name = 'SQL') |
Jokertecken
I följande tabell definieras de 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 Name värdet ä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 till false 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. Obs ! 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-formatet (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);