Microsoft.Windows.FilteredRegistryDiscoveryProvider

Applies To: Operations Manager 2007 R2

The Microsoft.Windows.FilteredRegistryDiscoveryProvider module is a discovery data source module type that queries the Windows registry at a scheduled frequency and returns filtered results as System.Discovery.Data data.

Usage

Use this module when you want to query the Windows registry inside a discovery workflow. This module supports retrieving any key or value from the HKEY_LOCAL_MACHINE hive of the registry only. For multi-string values, only the first string is returned. This module allows you to specify a filter on the returned registry data before it is mapped to discovery data.

Type Definition

<DataSourceModuleType ID="Microsoft.Windows.FilteredRegistryDiscoveryProvider" Accessibility="Public">
  <Configuration>
    <IncludeSchemaTypes>
      <SchemaType>Microsoft.Windows.RegistryAttributeDefinitionsSchema</SchemaType>
      <SchemaType>System!System.Discovery.MapperSchema</SchemaType>
      <SchemaType>System!System.ExpressionEvaluatorSchema</SchemaType>
    </IncludeSchemaTypes>
    <xsd:element name="ComputerName" type="xsd:string" />
    <xsd:element name="RegistryAttributeDefinitions" type="RegistryAttributeDefinitionsType" />
    <xsd:element name="Frequency" type="xsd:unsignedInt" />
    <xsd:element name="ClassId" type="xsd:string" />
    <xsd:element name="InstanceSettings" minOccurs="0" maxOccurs="1" type="SettingsType" />
    <xsd:element name="Expression" type="ExpressionType" />
  </Configuration>
  <OverrideableParameters>
    <OverrideableParameter ID="Frequency" Selector="$Config/Frequency$" ParameterType="int" />
  </OverrideableParameters>
  <ModuleImplementation>
    <Composite>
      <MemberModules>
        <DataSource ID="DS" TypeID="Microsoft.Windows.Discovery.RegistryProvider">
          <ComputerName>$Config/ComputerName$</ComputerName>
          <RegistryAttributeDefinitions>$Config/RegistryAttributeDefinitions$</RegistryAttributeDefinitions>
          <Frequency>$Config/Frequency$</Frequency>
        </DataSource>
        <ConditionDetection ID="Mapping" TypeID="System!System.Discovery.FilteredClassSnapshotDataMapper">
          <Expression>$Config/Expression$</Expression>
          <ClassId>$Config/ClassId$</ClassId>
          <InstanceSettings>$Config/InstanceSettings$</InstanceSettings>
        </ConditionDetection>
      </MemberModules>
      <Composition>
        <Node ID="Mapping">
          <Node ID="DS" />
        </Node>
      </Composition>
    </Composite>
  </ModuleImplementation>
  <OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>

Parameters

The Microsoft.Windows.FilteredRegistryDiscoveryProvider module supports the configuration parameters described in the following table.

Parameter Type Overrideable Description

ComputerName

String

False

Required parameter. The name of the computer from which to query the registry.

RegistryAttributeDefinitions

RegistryAttributeDefinitionsType

False

Required parameter. The set of keys and values to gather from the registry.

Frequency

Unsigned Integer

True

Required parameter. Specifies the frequency, in seconds, at which to run the query over the Windows registry.

ClassId

String

False

Required parameter. Specifies the ID of the class type into which the registry data is to be mapped. Must always be in the following format: $MPElement[Name=”ClassTypeID”]$. For more information about the $MPElement variable notation, see $MPElement.

InstanceSettings

SettingsType

False

Required parameter. Defines all property values of the discovered class type instances.

Expression

ExpressionType

False

Required parameter. Contains the filter expression to apply to the registry data.

For more information about the ComputerName parameter, see the Microsoft.Windows.RegistryProbe module.

For more information about the RegistryAttributeDefinitions parameter, see RegistryAttributeDefinitionsType.

For more information about the Frequency parameter, see the System.Discovery.Scheduler module.

Composition

The Microsoft.Windows.FilteredRegistryDiscoveryProvider module is a composite module that contains the member modules described in the following table.

Workflow Run Order Module Type Usage

1

Microsoft.Windows.Discovery.RegistryProvider

Queries Windows registry values or keys and returns Microsoft.Windows.RegistryData data.

2

System.Discovery.FilteredClassSnapshotDataMapper

Filters the incoming Microsoft.Windows.RegistryData and maps the filtered data to System.Discovery.Data data.

Module Type Usage

Microsoft.Windows.RegistryProvider

Queries Windows registry values or keys and returns Microsoft.Windows.RegistryData data.

Microsoft.Windows.Discovery.RegistryProviderSingle

Queries a single Windows registry value or key and returns Microsoft.Windows.RegistryData data.

Microsoft.Windows.Discovery.RegistryProviderSingle

Queries a single Windows registry value or key and returns System.Discovery.Data data. No filtering of data is provided in this module type. This should be used only when you know that the registry keys and values will always be present.

Microsoft.Windows.RegistryDiscoveryProvider

Queries the Windows registry for keys or values and returns System.Discovery.Data data. No filtering of data is provided in this module type. This should be used only when you know that the registry keys and values will always be present.

Microsoft.Windows.RegistryDiscoverySingleProvider

Queries the Windows registry for a single key or value and returns System.Discovery.Data data. No filtering of data is provided in this module type. This should be used only when you know that the registry keys and values will always be present.

External Module References

None.

Sample

The following XML sample shows an example of a discovery that uses the Microsoft.Windows.FilteredRegistryDiscoveryProvider module to discover a class instance at a specified location.

<Discovery ID="Microsoft.Samples.ApplicationX.Discovery" Target="Windows!Microsoft.Windows.Server.Computer" Remotable="true" Enabled="true">
  <Category>Discovery</Category>
  <DiscoveryTypes>
    <DiscoveryClass TypeID="Microsoft.Samples.ApplicationX">
      <Property PropertyID="Version"/>
      <Property PropertyID="Path"/>
      <Property TypeID="System!System.Entity" PropertyID="DisplayName"/>
    </DiscoveryClass>
  </DiscoveryTypes>
  <DataSource ID="DS" TypeID="Windows!Microsoft.Windows.FilteredRegistryDiscoveryProvider">
    <ComputerName>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
    <RegistryAttributeDefinitions>
      <RegistryAttributeDefinition>
        <AttributeName>ApplicationXExists</AttributeName>
        <Path>SOFTWARE\MicrosoftSamples\ApplicationX</Path>
        <PathType>0</PathType>
        <AttributeType>0</AttributeType>
      </RegistryAttributeDefinition>
      <RegistryAttributeDefinition>
        <AttributeName>ApplicationXVersion</AttributeName>
        <Path>SOFTWARE\MicrosoftSamples\ApplicationX\Version</Path>
        <PathType>1</PathType>
        <AttributeType>1</AttributeType>
      </RegistryAttributeDefinition>
      <RegistryAttributeDefinition>
        <AttributeName>ApplicationXPath</AttributeName>
        <Path>SOFTWARE\MicrosoftSamples\ApplicationX\Path</Path>
        <PathType>1</PathType>
        <AttributeType>1</AttributeType>
      </RegistryAttributeDefinition>
    </RegistryAttributeDefinitions>
    <Frequency>1800</Frequency>
    <ClassId>$MPElement[Name="Microsoft.Samples.ApplicationX"]$</ClassId>
    <InstanceSettings>
      <Settings>
        <Setting>
          <Name>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Name>
          <Value>$Target/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
        </Setting>
        <Setting>
          <Name>$MPElement[Name="System!System.Entity"]/DisplayName$</Name>
          <Value>Application X ($Target/Property[Type="Windows!Microsoft.Windows.Computer"]/NetbiosComputerName$)</Value>
        </Setting>
        <Setting>
          <Name>$MPElement[Name="Microsoft.Samples.ApplicationX"]/Version$</Name>
          <Value>$Data/Values/ApplicationXVersion$</Value>
        </Setting>
        <Setting>
          <Name>$MPElement[Name="Microsoft.Samples.ApplicationX"]/Path$</Name>
          <Value>$Data/Values/ApplicationXPath$</Value>
        </Setting>
      </Settings>
    </InstanceSettings>
    <Expression>
      <SimpleExpression>
        <ValueExpression>
          <XPathQuery Type="Boolean">Values/ApplicationXExists</XPathQuery>
        </ValueExpression>
        <Operator>Equal</Operator>
        <ValueExpression>
          <Value Type="Boolean">true</Value>
        </ValueExpression>
      </SimpleExpression>
    </Expression>

  </DataSource>
</Discovery>

Information

   

Module Type

DataSourceModuleType

Input Type

None

Output Type

System.Discovery.Data

Implementation

Composite

Library

Microsoft.Windows.Library