Supporto delle espressioni regolari in System Center Operations Manager

Quando si creano Management Pack, potrebbe essere necessario includere la corrispondenza delle espressioni regolari nelle individuazioni e nei gruppi. Le espressioni regolari possono anche essere necessarie per la corrispondenza dei criteri di ricerca nei criteri di espressione nei monitoraggi e nelle regole.

Versione originale del prodotto: System Center Operations Manager
Numero KB originale: 2702651

Operations Manager supporta due tipi diversi di espressioni regolari. È necessario conoscere l'elemento in cui si sta lavorando per poter scegliere l'espressione corretta. I filtri per il calcolo dell'appartenenza ai gruppi e le espressioni usano sintassi distintamente diverse per la corrispondenza dei criteri.

Calcolo del gruppo

Il calcolo del gruppo usa la PERL sintassi delle espressioni regolari. Per impostazione predefinita, la corrispondenza non fa distinzione tra maiuscole e minuscole, tuttavia è possibile specificare che un'espressione deve fare distinzione tra maiuscole e minuscole usando un attributo speciale nel codice XML. Per altre informazioni, vedere SimpleCriteriaType.

Il calcolo del gruppo viene trovato nel Management Pack ogni volta che si usa il Group Calc modulo. L'espressione GroupCalc usa l'operatore per creare l'appartenenza MatchesRegularExpression dinamica ai gruppi in base alle espressioni di corrispondenza dei criteri. L'implementazione di questo operatore passa l'espressione trovata in MP XML al nome della dbo.fn_MatchesRegularExpression chiamata SQL. Se questa chiamata restituisce un valore pari a 0, la corrispondenza è false. Se restituisce un valore pari a 1, la corrispondenza è true.

Importante

Il dbo.fn_MatchesRegularExpression nome della chiamata SQL stesso fa distinzione tra maiuscole e minuscole, quindi anche l'operatore MatchesRegularExpression usato nei criteri di appartenenza ai gruppi dinamici fa distinzione tra maiuscole e minuscole.

GroupCalc supporta anche due sottoelementi speciali che creano espressioni astratte delle query di stile regex comuni seguenti.

Funzioni speciali GroupCalc

Sottoelemento GroupCalc Espressione MP Equivalente regex
ContainsSubstring ^*{O}.*$ (Wherein {O} viene sostituito dalla sottostringa)
MatchesWildcard ? .
MatchesWildcard * .*
MatchesWildcard # [0-9]

Nota

Se si usa uno di questi due operatori speciali, la valutazione fa sempre distinzione tra maiuscole e minuscole.

Criteri di corrispondenza del filtro delle espressioni

I filtri di espressione usati nei Management Pack usano la sintassi delle espressioni regex di .NET Framework. Non tutte le espressioni funzionano. Sono tuttavia supportati gli elementi di sintassi delle espressioni regolari di .NET Framework seguenti. I filtri di espressione sono presenti nel Management Pack quando si usa il modulo Expression Eval.

Sintassi regex di Operations Manager

Costruire Regex di Operations Manager
Qualsiasi carattere .
Carattere nell'intervallo [ ]
Carattere non compreso nell'intervallo [^ ]
Inizio della riga ^
Fine riga $
Oppure |
Gruppo ( )
0 o 1 corrispondenza ?
0 o più corrispondenze *
1 o più corrispondenze +
Corrispondenze esattamente N {n}
Almeno N corrispondenze {n, }
Al massimo N corrispondenze { , n}
Corrispondenze da N a M {n, m}
Nuovo carattere di riga \n
Carattere tabulato \T

Esempi di espressioni regolari di Operations Manager (regex)

Esempio 1

Cercare eventuali corrispondenze contenenti una singola stringa, string1:

^(string1)$

Esempio 2

Cercare eventuali corrispondenze contenenti una delle due stringhe string1 oppure string2:

^(string1)|^(string2)$

Esempio 3

Cercare eventuali corrispondenze alle cartelle che si trovano in modo ricorsivo nei due percorsi di cartella, (/var/lib/string1/* o /var/lib/string2/*):

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

Esempio 4

Cercare eventuali corrispondenze che contengono una delle due stringhe Agent1.contoso.com oppure (senza distinzione tra maiuscole e Agent2.contoso.com minuscole):

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

Cercare eventuali corrispondenze che contengono Agent (senza distinzione tra maiuscole e minuscole):

^(?i)(agent.*)$

Espressioni regolari tramite SDK

Operations Manager SDK dispone di un operatore Criteri di corrispondenza per filtrare gli oggetti. Questo operatore usa la stessa funzionalità MatchesCriteria del caso GroupCalc indicato in precedenza.

Quando si usa l'SDK per costruire un'espressione criteri per trovare oggetti nel database di Operations Manager, gli elementi di sintassi seguenti sono validi e utili:

  • Operatori di confronto
  • Caratteri jolly
  • Valori DateTime
  • Confronti tra enumerazione integer e XML

Operatori di confronto

È possibile usare operatori di confronto quando si costruisce un'espressione di criteri. Gli operatori validi sono descritti nella tabella seguente.

Operatori di confronto SDK

Operatore Descrizione Esempi
=, == Restituisce true se gli operandi sinistro e destro sono uguali. Name = 'mymachine.contoso.com'
!=, <> Restituisce true se gli operandi sinistro e destro sono diversi. Name != 'mymachine.contoso.com'
> Restituisce true se l'operando sinistro è maggiore dell'operando destro. Severity > 0
< Restituisce true se l'operando sinistro è minore dell'operando destro. Severity < 2
>= Restituisce true se l'operando sinistro è maggiore o uguale all'operando destro. Severity >= 1
<= Restituisce true se l'operando sinistro è minore o uguale all'operando destro. Severity <= 3
COME Restituisce true se l'operando sinistro corrisponde al modello definito dall'operando destro. Utilizzare i caratteri nella tabella con caratteri jolly per definire il modello. Name 'LIKE SQL%'
Restituisce true se il Name valore è SQLEngine.

Name LIKE '%SQL%'
Restituisce true se il Name valore è MySQLEngine.
CORRISPONDENZE Restituisce true se l'operando sinistro corrisponde all'espressione regolare definita dall'operando destro. Name MATCHES 'SQL*05'
Restituisce true se il Name valore è SQL2005.
IS NULL Restituisce true se il valore dell'operando sinistro è Null. ConnectorId IS NULL
Restituisce true se la ConnectorId proprietà non contiene un valore.
NON È NULL Restituisce true se il valore dell'operando sinistro non è Null. ConnectorId IS NOT NULL
Restituisce true se la ConnectorId proprietà contiene un valore.
POLLICI Restituisce true se il valore dell'operando sinistro è nell'elenco dei valori definiti dall'operando destro.

Nota L'operatore IN è valido solo per l'uso con proprietà di tipo Guid.
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002')
Restituisce true se il valore della Id proprietà è uno dei due identificatori univoci globali forniti nell'espressione.
E Restituisce true se gli operandi sinistro e destro sono entrambi true. Name = 'SQL%' AND Description LIKE 'MyData%'
OPPURE Restituisce true se l'operando sinistro o destro è true. Name = 'SQL%' OR Description LIKE 'MyData%'
NON Restituisce true se l'operando corretto non è true. NOT (Name = 'IIS' OR Name = 'SQL')

Caratteri jolly

La tabella seguente definisce i caratteri jolly che è possibile usare per costruire un modello quando si usa l'operatore LIKE .

Operatori con caratteri jolly usati con l'operatore LIKE

Carattere jolly Descrizione Esempio
% Carattere jolly che corrisponde a un numero qualsiasi di caratteri. Name LIKE 'SQL%'
Restituisce true se il Name valore è SQLEngine.

Name LIKE '%SQL%'
Restituisce true se il Name valore è MySQLEngine.
_ Carattere jolly che corrisponde a un singolo carattere. Name LIKE 'SQL200_'
Restituisce true per i valori seguenti Name :

SQL2000
SQL2005

Nota: l'espressione restituisce false per SQL200 perché il simbolo _ deve corrispondere esattamente a un carattere nel Name valore.
[] Carattere jolly che corrisponde a qualsiasi carattere racchiuso nel set di caratteri.

Nota Le parentesi quadre vengono usate anche quando si qualificano i riferimenti alle proprietà MonitoringObject . Per altre informazioni, vedere Definizione di query per il monitoraggio di oggetti.
Name LIKE 'SQL200[05]'
Restituisce true per i valori seguenti Name :

SQL2000
SQL2005

L'espressione restituisce false per SQL2003.
[^] Carattere jolly che corrisponde a qualsiasi carattere non racchiuso nel set di caratteri. Name LIKE 'SQL200[^05]'
Restituisce true per SQL2003.

L'espressione restituisce false per SQL2000 e SQL2005.

Confronti DateTime

Quando si usa un valore DateTime in un'espressione di query, usare il formato DateTime generale (G) per convertire il DateTime valore in un valore stringa. Ad esempio:

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

Convertire tutti i valori di data nel formato G (GMT) per eseguire confronti di stringhe validi.

Confronto tra valori integer e enumerazioni

Quando si usa un valore di enumerazione integer in un'espressione di query, eseguire il cast del valore di enumerazione su un intero.

Ad esempio:

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

Ulteriori informazioni