DetailPage-MSS-KB

Microsoft small business knowledge base

Article ID: 2702651 - Last Review: February 18, 2014 - Revision: 5.0

Summary

When you author management packs, you may have to include regular expression matching in discoveries and groups. Regular expressions may also be necessary for pattern matching in expression criteria in monitors and rules.

System Center Operations Manager supports two different types of regular expressions. You must know which element you are working in to be able to choose the correct expression. Group membership calculation and expression filters use distinctly different syntaxes for pattern matching.

More Information

Group calculation uses PERL regular expression syntax. By default, the matching is case-insensitive. But in the XML, you can specify that an expression must be case-sensitive by using a special attribute. For more information, see http://msdn.microsoft.com/en-us/library/hh135104.aspx.

Group Calculation is found in your MP whenever you use the Group Calc module.

The GroupCalc expression uses the MatchesRegularExpression operator to create dynamic group membership based on pattern matching expressions. The implementation of this operator passes the expression that is found in the MP XML to the dbo.fn_MatchesRegularExpression SQL call name. If this call returns a value of 0, the match is false. If it returns a value of 1, the match is true.

GroupCalc also supports two special sub-elements that make abstract expressions of the following common regex style queries.

GroupCalc sub element

Regex Equivalent

ContainsSubstring

^*{O}.*$                ({O} is replaced by the substring)

MatchesWildcard

MP expression

Regex Equivalent

?

.

*

.*

#

[0-9]

Table 1:  GroupCalc special functions

Note If either of these two special operators are used, the evaluation is always case-sensitive.

Expression Filter matching criteria

Expression filters that are used in management packs use .NET Regex expression syntax.  Not all expressions work. However, the following .NET regular expression syntax elements are supported. Expression filters exist in your management pack when you use the Expression Eval module.

Construct

SCOM Regex

Any Character

.

Character in Range

[ ]

Character not in range

[^ ]

Beginning of Line

^

End of Line

$

Or

|

Group

( )

0 or 1 matches

?

0 or more matches

*

1 or more matches

+

Exactly N matches

{n}

Atleast N matches

{n, }

Atmost N matches

{ , n}

N to M Matches

{n, m}

New line character

\n

Tab character

\t

Table 2: SCOM Regex syntax

Regular expressions via SDK

The SCOM SDK has a Matches criteria operator for filtering objects. This operator use the same functionality as MatchesCriteria in the GroupCalc case mentioned earlier.

When you use the SDK to construct a criteria expression to find objects in the Ops Manager database, the following syntax elements are valid and useful:

  • Comparison operators
  • Wildcard characters
  • DateTime values
  • Integer to XML Enumeration comparisons

Comparison operators

You can use comparison operators when you construct a criteria expression. The valid operators are described in the following table.

Operator

Description

Example(s)

=, ==

Evaluates to true if the left and right operand are equal.

Name = 'mymachine.mydomain.com'

!=, <>

Evaluates to true if the left and right operand are unequal.

Name != 'mymachine.mydomain.com'

>

Evaluates to true if the left operand is greater than the right operand.

Severity > 0

<

Evaluates to true if the left operand is less than the right operand.

Severity < 2

>=

Evaluates to true if the left operand is greater than or equal to the right operand.

Severity >= 1

<=

Evaluates to true if the left operand is less than or equal to the right operand.

Severity <= 3

LIKE

Evaluates to true if the left operand matches the pattern that is defined by the right operand. Use the characters in the wildcard table later in this topic to define the pattern.

Name 'LIKE SQL%'

Evaluates to true if the Name value is "SQLEngine."

Name LIKE '%SQL%'

Evaluates to true if the Name value is "MySQLEngine."

MATCHES

Evaluates to true if the left operand matches the regular expression defined by the right operand.

Name MATCHES 'SQL*05'

Evaluates to true if the Name value is "SQL2005."

IS NULL

Evaluates to true if the value of the left operand is null.

ConnectorId IS NULL

Evaluates to true if the ConnectorId property does not contain a value.

IS NOT NULL

Evaluates to true if the value of the left operand is not null.

ConnectorId IS NOT NULL

Evaluates to true if the ConnectorId property contains a value.

IN

Evaluates to true if the value of the left operand is in the list of values defined by the right operand.

Note

The IN operator is valid for use only with properties of type Guid.

Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002')

Evaluates to true if the value of the Id property is one of the two globally unique identifiers provided in the expression.

AND

Evaluates to true if the left and right operands are both true.

Name = 'SQL%' AND Description LIKE 'MyData%'

OR

Evaluates to true if either the left or right operand is true.

Name = 'SQL%' OR Description LIKE 'MyData%'

NOT

Evaluates to true if the right operand is not true.

NOT (Name = 'IIS' OR Name = 'SQL')

Table 3: SDK comparison operators

Wildcards

The following table defines the wildcard characters that you can use to construct a pattern when you use the LIKE operator.

Wildcard

Description

Example

%

A wildcard that matches any number of characters.

Name LIKE 'SQL%'

Evaluates to true if the Name value is "SQLEngine."

Name LIKE '%SQL%'

Evaluates to true if the Name value is "MySQLEngine."

_

A wildcard that matches a single character.

Name LIKE 'SQL200_'

Evaluates to true for the following Name values:

"SQL2000"

"SQL2005"

Note

The expression evaluates to false for "SQL200" because the symbol _ must match exactly one character in the Name value.

[]

A wildcard that matches any one character that is enclosed in the character set.

Note

Brackets are also used when qualifying references to MonitoringObject properties. For more information, see Defining Queries for Monitoring Objects.

Name LIKE 'SQL200[05]'

Evaluates to true for the following Name values:

"SQL2000"

"SQL2005"

The expression evaluates to false for

"SQL2003."

[^]

A wildcard that matches any one character that is not enclosed in the character set.

Name LIKE 'SQL200[^05]'

Evaluates to true for

"SQL2003."

The expression evaluates to false for

"SQL2000" and

"SQL2005."

Table 4:  Wildcard operators used with LIKE operator

DateTime comparisons

When you use a DateTime value in a query expression, use the general DateTime format ("G") to convert the DateTime value to a string value. For example:

C#

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

ManagementPackCriteria mpCriteria = new ManagementPackCriteria(qStr);

All date values need to be converted to the G format (GMT) so that valid string comparisons can be made.

Integer value comparison to enumerations

When you use an integer enumeration value in a query expression, cast the enumeration value to an integer. For example:

C#

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

MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);

 


Applies to
  • Microsoft System Center Operations Manager 2007
  • Microsoft System Center 2012 Operations Manager
  • Microsoft System Center Operations Manager 2007 R2
  • Microsoft System Center Operations Manager 2007 Service Pack 1
  • Microsoft System Center 2012 Operations Manager Service Pack 1
Keywords: 
kbtshoot KB2702651
Share
Additional support options
Ask The Microsoft Small Business Support Community
Contact Microsoft Small Business Support
Find Microsoft Small Business Support Certified Partner
Find a Microsoft Store For In-Person Small Business Support