Prise en charge des expressions régulières dans System Center Operations Manager

Lorsque vous créez des packs d’administration, vous devrez peut-être inclure la correspondance d’expressions régulières dans les découvertes et les groupes. Les expressions régulières peuvent également être nécessaires pour la correspondance de modèle dans les critères d’expression dans les moniteurs et les règles.

Version d’origine du produit : System Center Operations Manager
Numéro de la base de connaissances d’origine : 2702651

Operations Manager prend en charge deux types différents d’expressions régulières. Vous devez savoir dans quel élément vous travaillez pour pouvoir choisir l’expression correcte. Le calcul de l’appartenance à un groupe et les filtres d’expression utilisent des syntaxes distinctement différentes pour la correspondance de modèle.

Calcul de groupe

Le calcul de groupe utilise la PERL syntaxe d’expression régulière. Par défaut, la correspondance ne respecte pas la casse, mais vous pouvez spécifier qu’une expression doit respecter la casse à l’aide d’un attribut spécial dans le code XML. Pour plus d’informations, consultez SimpleCriteriaType.

Le calcul de groupe se trouve dans votre pack d’administration (MP) chaque fois que vous utilisez le Group Calc module. L’expression GroupCalc utilise l’opérateur pour créer une MatchesRegularExpression appartenance dynamique à un groupe en fonction des expressions de correspondance de modèle. L’implémentation de cet opérateur transmet l’expression qui se trouve dans le fichier XML MP au nom de l’appel dbo.fn_MatchesRegularExpression SQL. Si cet appel retourne la valeur 0, la correspondance est false. S’il retourne la valeur 1, la correspondance est true.

Importante

Le dbo.fn_MatchesRegularExpression nom d’appel SQL lui-même respecte la casse, de sorte que l’opérateur utilisé dans les MatchesRegularExpression critères d’appartenance dynamique aux groupes respecte également la casse.

GroupCalc prend également en charge deux sous-éléments spéciaux qui créent des expressions abstraites des requêtes de style regex courantes suivantes.

Fonctions spéciales GroupCalc

Sous-élément GroupCalc Expression MP Équivalent d’expression régulière
ContainsSubstring ^*{O}.*$ (Où {O} est remplacé par la sous-chaîne)
MatchesWildcard ? .
MatchesWildcard * .*
MatchesWildcard # [0-9]

Remarque

Si l’un de ces deux opérateurs spéciaux est utilisé, l’évaluation respecte toujours la casse.

Critères de correspondance du filtre d’expression

Les filtres d’expression utilisés dans les packs d’administration utilisent la syntaxe d’expression régulière .NET Framework. Toutes les expressions ne fonctionnent pas. Toutefois, les éléments de syntaxe d’expression régulière .NET Framework suivants sont pris en charge. Des filtres d’expression existent dans votre pack d’administration lorsque vous utilisez le module Expression Eval.

Syntaxe d’expression régulière Operations Manager

Construire Expression régulière Operations Manager
N’importe quel caractère .
Caractère dans la plage [ ]
Caractère non compris dans la plage [^ ]
Début de ligne ^
Fin de ligne $
Ou |
Groupe ( )
0 ou 1 correspondance ?
0 ou plus de correspondances *
1 ou plusieurs correspondances +
Exactement N correspond à n
Au moins N correspondances {n, }
Au maximum N correspondances { , n}
Correspondances de N à M {n, m}
Nouveau caractère de ligne \n
Caractère de tabulation \t

Exemples d’expressions régulières Operations Manager (regex)

Exemple 1

Recherchez toutes les correspondances contenant une seule chaîne, : string1

^(string1)$

Exemple 2

Recherchez toutes les correspondances contenant l’une des deux chaînes, string1 ou string2:

^(string1)|^(string2)$

Exemple 3

Recherchez des correspondances avec des dossiers situés de manière récursive sous les chemins d’accès des deux dossiers , (/var/lib/string1/* ou /var/lib/string2/*) :

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

Exemple 4

Recherchez toutes les correspondances qui contiennent l’une des deux chaînes ou Agent1.contoso.comAgent2.contoso.com (ne respectant pas la casse) :

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

Recherchez toutes les correspondances qui contiennent Agent (sans respect de la casse) :

^(?i)(agent.*)$

Expressions régulières via le Kit de développement logiciel (SDK)

Le Kit de développement logiciel (SDK) Operations Manager dispose d’un opérateur de critères De correspondance pour filtrer les objets. Cet opérateur utilise les mêmes fonctionnalités que MatchesCriteria dans le cas GroupCalc mentionné précédemment.

Lorsque vous utilisez le Kit de développement logiciel (SDK) pour construire une expression de critère afin de rechercher des objets dans la base de données Operations Manager, les éléments de syntaxe suivants sont valides et utiles :

  • Opérateurs de comparaison
  • Caractères génériques
  • Valeurs DateTime
  • Comparaisons d’énumérations entier à XML

Opérateurs de comparaison

Vous pouvez utiliser des opérateurs de comparaison lorsque vous construisez une expression de critère. Les opérateurs valides sont décrits dans le tableau suivant.

Opérateurs de comparaison du Kit de développement logiciel (SDK)

Opérateur Description Exemple(s)
=, == Prend la valeur true si les opérandes gauche et droit sont égaux. Name = 'mymachine.contoso.com'
!=, <> Prend la valeur true si les opérandes gauche et droit sont inégaux. Name != 'mymachine.contoso.com'
> Prend la valeur true si l’opérande gauche est supérieur à l’opérande droit. Severity > 0
< Prend la valeur true si l’opérande gauche est inférieur à l’opérande droit. Severity < 2
>= Prend la valeur true si l’opérande gauche est supérieur ou égal à l’opérande droit. Severity >= 1
<= Prend la valeur true si l’opérande gauche est inférieur ou égal à l’opérande droit. Severity <= 3
J’AIME Prend la valeur true si l’opérande gauche correspond au modèle défini par l’opérande droit. Utilisez les caractères du tableau générique pour définir le modèle. Name 'LIKE SQL%'
Prend la valeur true si la Name valeur est SQLEngine.

Name LIKE '%SQL%'
Prend la valeur true si la Name valeur est MySQLEngine.
CORRESPOND À Prend la valeur true si l’opérande gauche correspond à l’expression régulière définie par l’opérande droit. Name MATCHES 'SQL*05'
Prend la valeur true si la Name valeur est SQL2005.
EST NULL Prend la valeur true si la valeur de l’opérande gauche est null. ConnectorId IS NULL
Prend la valeur true si la ConnectorId propriété ne contient pas de valeur.
N’EST PAS NULL Prend la valeur true si la valeur de l’opérande gauche n’est pas null. ConnectorId IS NOT NULL
Prend la valeur true si la ConnectorId propriété contient une valeur.
DANS Prend la valeur true si la valeur de l’opérande gauche figure dans la liste des valeurs définies par l’opérande droit.

Note L’opérateur IN est valide pour une utilisation uniquement avec les propriétés de type GUID.
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002')
Prend la valeur true si la valeur de la Id propriété est l’un des deux identificateurs globaux uniques fournis dans l’expression.
AND Prend la valeur true si les opérandes gauche et droit ont la valeur true. Name = 'SQL%' AND Description LIKE 'MyData%'
OR Prend la valeur true si l’opérande gauche ou droit a la valeur true. Name = 'SQL%' OR Description LIKE 'MyData%'
NOT Prend la valeur true si l’opérande droit n’est pas vrai. NOT (Name = 'IIS' OR Name = 'SQL')

Caractères génériques

Le tableau suivant définit les caractères génériques que vous pouvez utiliser pour construire un modèle lorsque vous utilisez l’opérateur LIKE .

Opérateurs génériques utilisés avec l’opérateur LIKE

Caractère générique Description Exemple
% Caractère générique qui correspond à un nombre quelconque de caractères. Name LIKE 'SQL%'
Prend la valeur true si la Name valeur est SQLEngine.

Name LIKE '%SQL%'
Prend la valeur true si la Name valeur est MySQLEngine.
_ Caractère générique qui correspond à un seul caractère. Name LIKE 'SQL200_'
Prend la valeur true pour les valeurs suivantes Name :

SQL2000
SQL2005

Remarque : L’expression prend la valeur false pour SQL200 , car le symbole _ doit correspondre exactement à un caractère de la Name valeur.
[] Caractère générique qui correspond à n’importe quel caractère placé dans le jeu de caractères.

Note Les crochets sont également utilisés lors de la qualification des références aux propriétés MonitoringObject . Pour plus d’informations, consultez Définition de requêtes pour les objets d’analyse.
Name LIKE 'SQL200[05]'
Prend la valeur true pour les valeurs suivantes Name :

SQL2000
SQL2005

L’expression prend la valeur false pour SQL2003.
[^] Caractère générique qui correspond à un caractère qui n’est pas placé dans le jeu de caractères. Name LIKE 'SQL200[^05]'
Prend la valeur true pour SQL2003.

L’expression prend la valeur false pour SQL2000 et SQL2005.

Comparaisons DateTime

Lorsque vous utilisez une valeur DateTime dans une expression de requête, utilisez le format DateTime général (G) pour convertir la DateTime valeur en valeur de chaîne. Par exemple :

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

Convertissez toutes les valeurs de date au format G (GMT) pour effectuer des comparaisons de chaînes valides.

Comparaison des valeurs entières aux énumérations

Lorsque vous utilisez une valeur d’énumération entière dans une expression de requête, convertissez la valeur d’énumération en entier.

Par exemple :

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

Plus d’informations