Condividi tramite


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 essere necessarie anche per la ricerca di 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 di calcolo e espressione di appartenenza a gruppi usano sintassi distintemente diverse per la ricerca di criteri di ricerca.

Calcolo del gruppo

Il calcolo del gruppo usa la sintassi delle PERL espressioni regolari. Per impostazione predefinita, la corrispondenza non fa distinzione tra maiuscole e minuscole, ma è 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 si trova nel Management Pack (MP) 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 presente 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

Anche il nome della dbo.fn_MatchesRegularExpression chiamata SQL fa distinzione tra maiuscole e minuscole, quindi anche l'operatore MatchesRegularExpression usato nei criteri di appartenenza dinamica ai gruppi farà 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

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

Note

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

Criteri di corrispondenza dei filtri 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 della sintassi delle espressioni regolari di .NET Framework seguenti. I filtri di espressione sono presenti nel Management Pack quando si usa il modulo Espressione Eval.

Sintassi regex di Operations Manager

Costrutto Espressione regolare di Operations Manager
Qualsiasi carattere .
Carattere nell'intervallo [ ]
Carattere non compreso nell'intervallo [^ ]
Inizio riga ^
Fine riga $
O |
Raggruppa ( )
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 riga \n
Carattere di tabulazioni \t

Esempi di espressioni regolari (regex) di Operations Manager

Esempio 1

Cercare eventuali corrispondenze contenenti una singola stringa, string1:

^(string1)$

Esempio 2

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

^(string1)|^(string2)$

Esempio 3

Cercare eventuali corrispondenze alle cartelle che si trovano in modo ricorsivo nei due percorsi delle cartelle, (/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 o Agent2.contoso.com (senza distinzione tra maiuscole e 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à del MatchesCriteria caso GroupCalc indicato in precedenza.

Quando si usa l'SDK per costruire un'espressione di 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 di enumerazione da integer a XML

Operatori di confronto

È possibile usare gli 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 non sono uguali. 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
LIKE Restituisce true se l'operando sinistro corrisponde al modello definito dall'operando destro. Usare i caratteri nella tabella con caratteri jolly per definire il criterio. 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.
IS NOT NULL Restituisce true se il valore dell'operando sinistro non è Null. ConnectorId IS NOT NULL
Restituisce true se la ConnectorId proprietà contiene un valore.
IN Restituisce true se il valore dell'operando sinistro si trova nell'elenco di valori definiti dall'operando destro.

Nota L'operatore IN è valido solo per l'uso con le 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%'
NOT Restituisce true se l'operando destro non è true. NOT (Name = 'IIS' OR Name = 'SQL')

Caratteri jolly

Nella tabella seguente vengono definiti i caratteri jolly che è possibile usare per costruire un criterio quando si usa l'operatore LIKE .

Operatori con caratteri jolly usati con l'operatore LIKE

Wildcard (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 gli oggetti di monitoraggio.
Name LIKE 'SQL200[05]'
Restituisce true per i valori seguenti Name :

SQL2000
SQL2005

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

L'espressione restituisce false per SQL2000 e SQL2005.

Confronti di 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 valide.

Confronto tra valori interi ed enumerazioni

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

Ad esempio:

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

Ulteriori informazioni