Udostępnij za pośrednictwem


Obsługa wyrażeń regularnych w programie System Center Operations Manager

Podczas tworzenia pakietów administracyjnych może być konieczne uwzględnienie dopasowywania wyrażeń regularnych w odnajdywaniach i grupach. Wyrażenia regularne mogą być również niezbędne do dopasowywania wzorców w kryteriach wyrażeń w monitorach i regułach.

Oryginalna wersja produktu: System Center Operations Manager
Oryginalny numer KB: 2702651

Program Operations Manager obsługuje dwa różne typy wyrażeń regularnych. Musisz wiedzieć, w którym elemencie pracujesz, aby móc wybrać poprawne wyrażenie. Filtry obliczeń członkostwa w grupie i wyrażeń używają wyraźnie różnych składni do dopasowywania wzorców.

Obliczanie grupy

Obliczenia grupy używają PERL składni wyrażeń regularnych. Domyślnie dopasowanie nie uwzględnia wielkości liter, ale można określić, że wyrażenie musi uwzględniać wielkość liter przy użyciu atrybutu specjalnego w kodzie XML. Aby uzyskać więcej informacji, zobacz SimpleCriteriaType.

Obliczenie grupy znajduje się w pakiecie administracyjnym (MP) za każdym razem, gdy używasz modułu Group Calc . Wyrażenie GroupCalc używa operatora do tworzenia dynamicznego MatchesRegularExpression członkostwa w grupie na podstawie wyrażeń dopasowania wzorca. Implementacja tego operatora przekazuje wyrażenie znalezione w formacie MP XML do nazwy dbo.fn_MatchesRegularExpression wywołania SQL. Jeśli to wywołanie zwróci wartość 0, dopasowanie ma wartość false. Jeśli zwraca wartość 1, dopasowanie jest prawdziwe.

Ważna

Sama dbo.fn_MatchesRegularExpression nazwa wywołania SQL uwzględnia wielkość liter, więc MatchesRegularExpression operator używany w kryteriach członkostwa w grupach dynamicznych również będzie uwzględniał wielkość liter.

Narzędzie GroupCalc obsługuje również dwa specjalne podelementy, które tworzą abstrakcyjne wyrażenia następujących typowych zapytań w stylu regex.

Funkcje specjalne GroupCalc

Element podrzędny GroupCalc Wyrażenie MP Odpowiednik regex
ContainsSubstring ^*{O}.*$ (Gdzie {O} jest zastępowany przez podciąg)
MatchesWildcard ? .
MatchesWildcard * .*
MatchesWildcard # [0-9]

Uwaga

Jeśli używany jest jeden z tych dwóch operatorów specjalnych, ocena zawsze uwzględnia wielkość liter.

Kryteria dopasowywania filtrów wyrażeń

Filtry wyrażeń używane w pakietach administracyjnych używają .NET Framework składni wyrażeń wyrażeń regularnych. Nie wszystkie wyrażenia działają. Obsługiwane są jednak następujące .NET Framework elementy składni wyrażeń regularnych. Filtry wyrażeń istnieją w pakiecie administracyjnym podczas korzystania z modułu Expression Eval.

Składnia regex programu Operations Manager

Konstruowania Rejestr programu Operations Manager
Dowolny znak .
Znak w zakresie [ ]
Znak nie w zakresie [^ ]
Początek wiersza ^
Koniec wiersza $
Lub |
Grupa ( )
0 lub 1 dopasowanie ?
0 lub więcej dopasowań *
1 lub więcej dopasowań +
Dokładnie N pasuje {n}
Co najmniej N dopasowań {n, }
Co najwyżej N dopasowań { , n}
Dopasowania od N do M {n, m}
Nowy znak wiersza \n
Znak tabulatora \T

Przykłady wyrażeń regularnych (regex) programu Operations Manager

Przykład 1

Wyszukaj wszystkie dopasowania zawierające jeden ciąg: string1

^(string1)$

Przykład 2

Wyszukaj wszystkie dopasowania zawierające jeden z dwóch ciągów string1 lub string2:

^(string1)|^(string2)$

Przykład 3

Wyszukaj wszystkie dopasowania do folderów znajdujących się cyklicznie w dwóch ścieżkach folderów(/var/lib/string1/* lub /var/lib/string2/*):

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

Przykład 4

Wyszukaj wszystkie dopasowania zawierające jeden z dwóch ciągów Agent1.contoso.com lub Agent2.contoso.com (bez uwzględniania wielkości liter):

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

Wyszukaj wszystkie dopasowania, które zawierają Agent (bez uwzględniania wielkości liter):

^(?i)(agent.*)$

Wyrażenia regularne za pośrednictwem zestawu SDK

Zestaw SDK programu Operations Manager ma operator kryteriów dopasowania do filtrowania obiektów. Ten operator korzysta z tych samych funkcji, co MatchesCriteria w przypadku GroupCalc, o których wspomniano wcześniej.

Gdy używasz zestawu SDK do konstruowania wyrażenia kryteriów w celu znalezienia obiektów w bazie danych programu Operations Manager, następujące elementy składni są prawidłowe i przydatne:

  • Operatory porównania
  • Symboli wieloznacznych
  • Wartości daty/godziny
  • Porównanie liczby całkowitej z wyliczeniem XML

Operatory porównania

Operatorów porównania można użyć podczas tworzenia wyrażenia kryteriów. Prawidłowe operatory są opisane w poniższej tabeli.

Operatory porównania zestawu SDK

Operator Opis Przykłady
=, == Oblicza wartość true , jeśli lewe i prawe operandy są równe. Name = 'mymachine.contoso.com'
!=, <> Oblicza wartość true , jeśli lewe i prawe operandy są nierówne. Name != 'mymachine.contoso.com'
> Oblicza wartość true , jeśli lewy operand jest większy niż prawy operand. Severity > 0
< Oblicza wartość true , jeśli lewy operand jest mniejszy niż prawy operand. Severity < 2
>= Oblicza wartość true , jeśli lewy operand jest większy lub równy prawemu operandowi. Severity >= 1
<= Oblicza wartość true , jeśli lewy operand jest mniejszy lub równy prawemu operandowi. Severity <= 3
JAK Oblicza wartość true , jeśli lewy operand pasuje do wzorca zdefiniowanego przez prawy operand. Użyj znaków w tabeli symboli wieloznaczowych , aby zdefiniować wzorzec. Name 'LIKE SQL%'
Oblicza wartość true , Name jeśli wartość to SQLEngine.

Name LIKE '%SQL%'
Oblicza wartość true , Name jeśli wartość to MySQLEngine.
PASUJE Oblicza wartość true , jeśli lewy operand jest zgodny z wyrażeniem regularnym zdefiniowanym przez prawy operand. Name MATCHES 'SQL*05'
Oblicza wartość true , Name jeśli wartość jest SQL2005.
MA WARTOŚĆ NULL Oblicza wartość true , jeśli wartość lewego operandu ma wartość null. ConnectorId IS NULL
Oblicza wartość true , jeśli właściwość ConnectorId nie zawiera wartości.
NIE MA WARTOŚCI NULL Oblicza wartość true , jeśli wartość lewego operandu nie ma wartości null. ConnectorId IS NOT NULL
Oblicza wartość true , jeśli właściwość ConnectorId zawiera wartość.
CALA Oblicza wartość true , jeśli wartość lewego operandu znajduje się na liście wartości zdefiniowanych przez prawy operand.

Uwaga Operator IN jest prawidłowy do użytku tylko z właściwościami typu Guid.
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002')
Oblicza wartość true , jeśli wartość Id właściwości jest jednym z dwóch globalnie unikatowych identyfikatorów podanych w wyrażeniu.
ORAZ Oblicza wartość true , jeśli lewe i prawe operandy są prawdziwe. Name = 'SQL%' AND Description LIKE 'MyData%'
LUB Oblicza wartość true , jeśli lewy lub prawy operand ma wartość true. Name = 'SQL%' OR Description LIKE 'MyData%'
NIE Oblicza wartość true , jeśli prawidłowy operand nie jest prawdziwy. NOT (Name = 'IIS' OR Name = 'SQL')

Symboli wieloznacznych

W poniższej tabeli zdefiniowano symbol wieloznaczny, którego można użyć do utworzenia wzorca podczas korzystania z LIKE operatora.

Operatory wieloznaczne używane z operatorem LIKE

Symbol wieloznaczny Opis Przykład
% Symbol wieloznaczny, który pasuje do dowolnej liczby znaków. Name LIKE 'SQL%'
Oblicza wartość true , Name jeśli wartość to SQLEngine.

Name LIKE '%SQL%'
Oblicza wartość true , Name jeśli wartość to MySQLEngine.
_ Symbol wieloznaczny, który pasuje do pojedynczego znaku. Name LIKE 'SQL200_'
Oblicza wartość true dla następujących Name wartości:

SQL2000
SQL2005

Uwaga: wyrażenie oblicza wartość false dla języka SQL200 , ponieważ symbol _ musi być zgodny z dokładnie jednym znakiem Name w wartości.
[] Symbol wieloznaczny zgodny z dowolnym znakiem ujętym w zestaw znaków.

Uwaga Nawiasy są również używane podczas kwalifikowania odwołań do właściwości MonitoringObject . Aby uzyskać więcej informacji, zobacz Definiowanie zapytań dotyczących obiektów monitorowania.
Name LIKE 'SQL200[05]'
Oblicza wartość true dla następujących Name wartości:

SQL2000
SQL2005

Wyrażenie oblicza wartość false dla SQL2003.
[^] Symbol wieloznaczny, który pasuje do jednego znaku, który nie jest ujęty w zestaw znaków. Name LIKE 'SQL200[^05]'
Oblicza wartość true dla SQL2003.

Wyrażenie oblicza wartość false dla SQL2000 i SQL2005.

Porównania daty/godziny

W przypadku użycia wartości DateTime w wyrażeniu zapytania użyj ogólnego formatu DateTime (G), aby przekonwertować DateTime wartość na wartość ciągu. Przykład:

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

Przekonwertuj wszystkie wartości daty na format G (GMT), aby dokonać prawidłowych porównań ciągów.

Porównanie wartości całkowitych z wyliczeniami

Jeśli używasz wartości wyliczenia liczby całkowitej w wyrażeniu zapytania, rzutuj wartość wyliczenia na liczbę całkowitą.

Przykład:

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

Więcej informacji