<ManagementPack ContentReadable="true" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <Manifest>
    <Identity>
      <ID>MPAuthor.PropertyBag</ID>
      <Version>1.0.0.1</Version>
    </Identity>
    <Name>MPAuthor.PropertyBag</Name>
    <References>
      <Reference Alias="DW">
        <ID>Microsoft.SystemCenter.DataWarehouse.Library</ID>
        <Version>6.1.7221.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="SC">
        <ID>Microsoft.SystemCenter.Library</ID>
        <Version>6.1.7221.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Windows">
        <ID>Microsoft.Windows.Library</ID>
        <Version>6.1.7221.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Health">
        <ID>System.Health.Library</ID>
        <Version>6.1.7221.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="System">
        <ID>System.Library</ID>
        <Version>6.1.7221.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Performance">
        <ID>System.Performance.Library</ID>
        <Version>6.1.7221.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <TypeDefinitions>
    <EntityTypes>
      <ClassTypes>
        <ClassType ID="MPAuthor.PropertyBag.TargetClass" Accessibility="Internal" Abstract="false" Base="Windows!Microsoft.Windows.ComputerRole" Hosted="true" Singleton="false" />
      </ClassTypes>
    </EntityTypes>
    <ModuleTypes>
      <DataSourceModuleType ID="MPAuthor.PropertyBag.DataSource.FileInfo.Performance" Accessibility="Internal" Batching="false">
        <Configuration>
          <xsd:element minOccurs="1" name="IntervalSeconds" type="xsd:integer" />
          <xsd:element minOccurs="0" name="SyncTime" type="xsd:string" />
          <xsd:element minOccurs="1" name="FileName" type="xsd:string" />
          <xsd:element minOccurs="1" name="CounterName" type="xsd:string" />
        </Configuration>
        <OverrideableParameters>
          <OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int" />
          <OverrideableParameter ID="SyncTime" Selector="$Config/SyncTime$" ParameterType="string" />
        </OverrideableParameters>
        <ModuleImplementation Isolation="Any">
          <Composite>
            <MemberModules>
              <DataSource ID="DS" TypeID="MPAuthor.PropertyBag.DataSource.FileInfo.PropertyBag">
                <IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
                <SyncTime>$Config/SyncTime$</SyncTime>
                <FileName>$Config/FileName$</FileName>
              </DataSource>
              <ConditionDetection ID="MapToPerf" TypeID="Performance!System.Performance.DataGenericMapper">
                <ObjectName>MMS</ObjectName>
                <CounterName>$Config/CounterName$</CounterName>
                <InstanceName>$Config/FileName$</InstanceName>
                <Value>$Data/Property[@Name='$Config/CounterName$']$</Value>
              </ConditionDetection>
            </MemberModules>
            <Composition>
              <Node ID="MapToPerf">
                <Node ID="DS" />
              </Node>
            </Composition>
          </Composite>
        </ModuleImplementation>
        <OutputType>Performance!System.Performance.Data</OutputType>
      </DataSourceModuleType>
      <DataSourceModuleType ID="MPAuthor.PropertyBag.DataSource.FileInfo.Performance.Optimized" Accessibility="Internal" Batching="false">
        <Configuration>
          <xsd:element minOccurs="1" name="IntervalSeconds" type="xsd:integer" />
          <xsd:element minOccurs="1" name="SyncTime" type="xsd:string" />
          <xsd:element minOccurs="1" name="FileName" type="xsd:string" />
          <xsd:element minOccurs="1" name="CounterName" type="xsd:string" />
          <xsd:element minOccurs="1" name="Tolerance" type="xsd:integer" />
          <xsd:element minOccurs="0" maxOccurs="1" name="ToleranceType">
            <xsd:simpleType>
              <xsd:restriction base="xsd:string">
                <xsd:enumeration value="Absolute" />
                <xsd:enumeration value="Percentage" />
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:element>
          <xsd:element minOccurs="1" name="MaximumSampleSeparation" type="xsd:integer" />
        </Configuration>
        <OverrideableParameters>
          <OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int" />
          <OverrideableParameter ID="SyncTime" Selector="$Config/SyncTime$" ParameterType="string" />
          <OverrideableParameter ID="Tolerance" Selector="$Config/Tolerance$" ParameterType="int" />
        </OverrideableParameters>
        <ModuleImplementation Isolation="Any">
          <Composite>
            <MemberModules>
              <DataSource ID="DS" TypeID="MPAuthor.PropertyBag.DataSource.FileInfo.Performance">
                <IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
                <SyncTime>$Config/SyncTime$</SyncTime>
                <FileName>$Config/FileName$</FileName>
                <CounterName>$Config/CounterName$</CounterName>
              </DataSource>
              <ConditionDetection ID="Optimize" TypeID="Performance!System.Performance.OptimizedCollectionFilter">
                <Tolerance>$Config/Tolerance$</Tolerance>
                <ToleranceType>$Config/ToleranceType$</ToleranceType>
                <MaximumSampleSeparation>$Config/MaximumSampleSeparation$</MaximumSampleSeparation>
                <SamplingPeriodInSeconds>$Config/IntervalSeconds$</SamplingPeriodInSeconds>
              </ConditionDetection>
            </MemberModules>
            <Composition>
              <Node ID="Optimize">
                <Node ID="DS" />
              </Node>
            </Composition>
          </Composite>
        </ModuleImplementation>
        <OutputType>Performance!System.Performance.Data</OutputType>
      </DataSourceModuleType>
      <DataSourceModuleType ID="MPAuthor.PropertyBag.DataSource.FileInfo.PropertyBag" Accessibility="Internal" Batching="false">
        <Configuration>
          <xsd:element minOccurs="1" name="IntervalSeconds" type="xsd:integer" />
          <xsd:element minOccurs="0" name="SyncTime" type="xsd:string" />
          <xsd:element minOccurs="1" name="FileName" type="xsd:string" />
        </Configuration>
        <OverrideableParameters>
          <OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int" />
          <OverrideableParameter ID="SyncTime" Selector="$Config/SyncTime$" ParameterType="string" />
        </OverrideableParameters>
        <ModuleImplementation Isolation="Any">
          <Composite>
            <MemberModules>
              <DataSource ID="Schedule" TypeID="System!System.SimpleScheduler">
                <IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
                <SyncTime>$Config/SyncTime$</SyncTime>
              </DataSource>
              <ProbeAction ID="Script" TypeID="MPAuthor.PropertyBag.Probe.FileInfo">
                <FileName>$Config/FileName$</FileName>
              </ProbeAction>
            </MemberModules>
            <Composition>
              <Node ID="Script">
                <Node ID="Schedule" />
              </Node>
            </Composition>
          </Composite>
        </ModuleImplementation>
        <OutputType>System!System.PropertyBagData</OutputType>
      </DataSourceModuleType>
      <ProbeActionModuleType ID="MPAuthor.PropertyBag.Probe.FileInfo" Accessibility="Internal" Batching="false" PassThrough="false">
        <Configuration>
          <xsd:element minOccurs="1" name="FileName" type="xsd:string" />
        </Configuration>
        <ModuleImplementation Isolation="Any">
          <Composite>
            <MemberModules>
              <ProbeAction ID="Script" TypeID="Windows!Microsoft.Windows.PowerShellPropertyBagTriggerOnlyProbe">
                <ScriptName>FileInfo.ps1</ScriptName>
                <ScriptBody><![CDATA[
param($fileName)

$file = get-item -path $fileName

$MinutesSinceUpdate = (new-timespan -start $file.LastWriteTime -end (get-date)).totalMinutes

$api = new-object -comObject 'MOM.ScriptAPI'
$bag = $api.CreatePropertyBag()
$bag.AddValue('FileName',$file.Name)
$bag.AddValue('FileSize',$file.Length)
$bag.AddValue('MinutesSinceUpdate',(new-timespan -start $file.LastWriteTime -end (get-date)).totalMinutes)
$bag.AddValue('MinutesSinceCreation',(new-timespan -start $file.CreationTime -end (get-date)).totalMinutes)

$api.Return($bag)
$bag
  ]]></ScriptBody>
                <Parameters>
                  <Parameter>
                    <Name>fileName</Name>
                    <Value>$Config/FileName$</Value>
                  </Parameter>
                </Parameters>
                <TimeoutSeconds>30</TimeoutSeconds>
              </ProbeAction>
            </MemberModules>
            <Composition>
              <Node ID="Script" />
            </Composition>
          </Composite>
        </ModuleImplementation>
        <OutputType>System!System.PropertyBagData</OutputType>
        <TriggerOnly>true</TriggerOnly>
      </ProbeActionModuleType>
    </ModuleTypes>
    <MonitorTypes>
      <UnitMonitorType ID="MPAuthor.PropertyBag.MonitorType.FileInfo" Accessibility="Internal">
        <MonitorTypeStates>
          <MonitorTypeState ID="UnderThreshold" NoDetection="false" />
          <MonitorTypeState ID="OverWarningThreshold" NoDetection="false" />
          <MonitorTypeState ID="OverErrorThreshold" NoDetection="false" />
        </MonitorTypeStates>
        <Configuration>
          <xsd:element minOccurs="1" name="IntervalSeconds" type="xsd:integer" />
          <xsd:element minOccurs="1" name="SyncTime" type="xsd:string" />
          <xsd:element minOccurs="1" name="FileName" type="xsd:string" />
          <xsd:element minOccurs="1" name="CounterName" type="xsd:string" />
          <xsd:element minOccurs="1" name="WarningThreshold" type="xsd:integer" />
          <xsd:element minOccurs="1" name="ErrorThreshold" type="xsd:integer" />
        </Configuration>
        <OverrideableParameters>
          <OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int" />
          <OverrideableParameter ID="SyncTime" Selector="$Config/SyncTime$" ParameterType="string" />
          <OverrideableParameter ID="WarningThreshold" Selector="$Config/WarningThreshold$" ParameterType="int" />
          <OverrideableParameter ID="ErrorThreshold" Selector="$Config/ErrorThreshold$" ParameterType="int" />
        </OverrideableParameters>
        <MonitorImplementation>
          <MemberModules>
            <DataSource ID="DS" TypeID="MPAuthor.PropertyBag.DataSource.FileInfo.PropertyBag">
              <IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
              <SyncTime />
              <FileName>$Config/FileName$</FileName>
            </DataSource>
            <ProbeAction ID="Probe" TypeID="MPAuthor.PropertyBag.Probe.FileInfo">
              <FileName>$Config/FileName$</FileName>
            </ProbeAction>
            <ConditionDetection ID="FilterUnderThreshold" TypeID="System!System.ExpressionFilter">
              <Expression>
                <SimpleExpression>
                  <ValueExpression>
                    <XPathQuery Type="Integer">Property[@Name='$Config/CounterName$']</XPathQuery>
                  </ValueExpression>
                  <Operator>Less</Operator>
                  <ValueExpression>
                    <Value Type="Integer">$Config/WarningThreshold$</Value>
                  </ValueExpression>
                </SimpleExpression>
              </Expression>
            </ConditionDetection>
            <ConditionDetection ID="FilterOverWarningThreshold" TypeID="System!System.ExpressionFilter">
              <Expression>
                <And>
                  <Expression>
                    <SimpleExpression>
                      <ValueExpression>
                        <XPathQuery Type="Integer">Property[@Name='$Config/CounterName$']</XPathQuery>
                      </ValueExpression>
                      <Operator>GreaterEqual</Operator>
                      <ValueExpression>
                        <Value Type="Integer">$Config/WarningThreshold$</Value>
                      </ValueExpression>
                    </SimpleExpression>
                  </Expression>
                  <Expression>
                    <SimpleExpression>
                      <ValueExpression>
                        <XPathQuery Type="Integer">Property[@Name='$Config/CounterName$']</XPathQuery>
                      </ValueExpression>
                      <Operator>Less</Operator>
                      <ValueExpression>
                        <Value Type="Integer">$Config/ErrorThreshold$</Value>
                      </ValueExpression>
                    </SimpleExpression>
                  </Expression>
                </And>
              </Expression>
            </ConditionDetection>
            <ConditionDetection ID="FilterOverErrorThreshold" TypeID="System!System.ExpressionFilter">
              <Expression>
                <SimpleExpression>
                  <ValueExpression>
                    <XPathQuery Type="Integer">Property[@Name='$Config/CounterName$']</XPathQuery>
                  </ValueExpression>
                  <Operator>GreaterEqual</Operator>
                  <ValueExpression>
                    <Value Type="Integer">$Config/ErrorThreshold$</Value>
                  </ValueExpression>
                </SimpleExpression>
              </Expression>
            </ConditionDetection>
          </MemberModules>
          <RegularDetections>
            <RegularDetection MonitorTypeStateID="UnderThreshold">
              <Node ID="FilterUnderThreshold">
                <Node ID="DS" />
              </Node>
            </RegularDetection>
            <RegularDetection MonitorTypeStateID="OverWarningThreshold">
              <Node ID="FilterOverWarningThreshold">
                <Node ID="DS" />
              </Node>
            </RegularDetection>
            <RegularDetection MonitorTypeStateID="OverErrorThreshold">
              <Node ID="FilterOverErrorThreshold">
                <Node ID="DS" />
              </Node>
            </RegularDetection>
          </RegularDetections>
          <OnDemandDetections>
            <OnDemandDetection MonitorTypeStateID="UnderThreshold">
              <Node ID="FilterUnderThreshold">
                <Node ID="Probe" />
              </Node>
            </OnDemandDetection>
            <OnDemandDetection MonitorTypeStateID="OverWarningThreshold">
              <Node ID="FilterOverWarningThreshold">
                <Node ID="Probe" />
              </Node>
            </OnDemandDetection>
            <OnDemandDetection MonitorTypeStateID="OverErrorThreshold">
              <Node ID="FilterOverErrorThreshold">
                <Node ID="Probe" />
              </Node>
            </OnDemandDetection>
          </OnDemandDetections>
        </MonitorImplementation>
      </UnitMonitorType>
    </MonitorTypes>
  </TypeDefinitions>
  <Monitoring>
    <Discoveries>
      <Discovery ID="MPAuthor.PropertyBag.Discovery.TargetClass" Enabled="true" Target="Windows!Microsoft.Windows.OperatingSystem" ConfirmDelivery="false" Remotable="true" Priority="Normal">
        <Category>Discovery</Category>
        <DiscoveryTypes>
          <DiscoveryClass TypeID="MPAuthor.PropertyBag.TargetClass" />
        </DiscoveryTypes>
        <DataSource ID="DS" TypeID="Windows!Microsoft.Windows.FilteredRegistryDiscoveryProvider">
          <ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
          <RegistryAttributeDefinitions>
            <RegistryAttributeDefinition>
              <AttributeName>AppExists</AttributeName>
              <Path>SOFTWARE\MPAuthor\PropertyBag</Path>
              <PathType>0</PathType>
              <AttributeType>0</AttributeType>
            </RegistryAttributeDefinition>
          </RegistryAttributeDefinitions>
          <Frequency>3600</Frequency>
          <ClassId>$MPElement[Name="MPAuthor.PropertyBag.TargetClass"]$</ClassId>
          <InstanceSettings>
            <Settings>
              <Setting>
                <Name>$MPElement[Name="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Name>
                <Value>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
              </Setting>
              <Setting>
                <Name>$MPElement[Name="System!System.Entity"]/DisplayName$</Name>
                <Value>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
              </Setting>
            </Settings>
          </InstanceSettings>
          <Expression>
            <SimpleExpression>
              <ValueExpression>
                <XPathQuery Type="String">Values/AppExists</XPathQuery>
              </ValueExpression>
              <Operator>Equal</Operator>
              <ValueExpression>
                <Value Type="String">True</Value>
              </ValueExpression>
            </SimpleExpression>
          </Expression>
        </DataSource>
      </Discovery>
    </Discoveries>
    <Rules>
      <Rule ID="MPAuthor.PropertyBag.Rule.CollectFileSize" Enabled="true" Target="MPAuthor.PropertyBag.TargetClass" ConfirmDelivery="true" Remotable="false" Priority="Normal" DiscardLevel="100">
        <Category>PerformanceCollection</Category>
        <DataSources>
          <DataSource ID="DS" TypeID="MPAuthor.PropertyBag.DataSource.FileInfo.Performance.Optimized">
            <IntervalSeconds>600</IntervalSeconds>
            <SyncTime />
            <FileName>C:\logs\MyAppFile.txt</FileName>
            <CounterName>FileSize</CounterName>
            <Tolerance>1</Tolerance>
            <MaximumSampleSeparation>1</MaximumSampleSeparation>
          </DataSource>
        </DataSources>
        <WriteActions>
          <WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectPerformanceData" />
          <WriteAction ID="WriteToDW" TypeID="DW!Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData" />
        </WriteActions>
      </Rule>
      <Rule ID="MPAuthor.PropertyBag.Rule.CollectMinutesSinceUpdate" Enabled="true" Target="MPAuthor.PropertyBag.TargetClass" ConfirmDelivery="true" Remotable="false" Priority="Normal" DiscardLevel="100">
        <Category>PerformanceCollection</Category>
        <DataSources>
          <DataSource ID="DS" TypeID="MPAuthor.PropertyBag.DataSource.FileInfo.Performance">
            <IntervalSeconds>600</IntervalSeconds>
            <FileName>C:\logs\MyAppFile.txt</FileName>
            <CounterName>MinutesSinceUpdate</CounterName>
          </DataSource>
        </DataSources>
        <WriteActions>
          <WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectPerformanceData" />
          <WriteAction ID="WriteToDW" TypeID="DW!Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData" />
        </WriteActions>
      </Rule>
    </Rules>
    <Monitors>
      <UnitMonitor ID="MPAuthor.PropertyBag.Monitor.FileSize" Accessibility="Internal" Enabled="true" Target="MPAuthor.PropertyBag.TargetClass" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="MPAuthor.PropertyBag.MonitorType.FileInfo" ConfirmDelivery="true">
        <Category>Custom</Category>
        <AlertSettings AlertMessage="MPAuthor.PropertyBag.Monitor.FileSize_AlertMessageResourceID">
          <AlertOnState>Error</AlertOnState>
          <AutoResolve>true</AutoResolve>
          <AlertPriority>Normal</AlertPriority>
          <AlertSeverity>Error</AlertSeverity>
        </AlertSettings>
        <OperationalStates>
          <OperationalState ID="UIGeneratedOpStateIdb898f77f517946e0912e387de37608c2" MonitorTypeStateID="UnderThreshold" HealthState="Success" />
          <OperationalState ID="UIGeneratedOpStateId1d6e4c4b92f94b49b5859df3418d3df2" MonitorTypeStateID="OverWarningThreshold" HealthState="Warning" />
          <OperationalState ID="UIGeneratedOpStateId490dfbe6ea8d4a05bd16126d2228ce56" MonitorTypeStateID="OverErrorThreshold" HealthState="Error" />
        </OperationalStates>
        <Configuration>
          <IntervalSeconds>600</IntervalSeconds>
          <SyncTime />
          <FileName>C:\logs\MyAppFile.txt</FileName>
          <CounterName>FileSize</CounterName>
          <WarningThreshold>10000</WarningThreshold>
          <ErrorThreshold>20000</ErrorThreshold>
        </Configuration>
      </UnitMonitor>
    </Monitors>
  </Monitoring>
  <Presentation>
    <Views>
      <View ID="MPAuthor.PropertyBag.View.FileSize" Accessibility="Internal" Enabled="true" Target="MPAuthor.PropertyBag.TargetClass" TypeID="SC!Microsoft.SystemCenter.PerformanceViewType" Visible="true">
        <Category>Operations</Category>
        <Criteria>
          <Counter>FileSize</Counter>
        </Criteria>
        <Presentation>
          <SortedColumnIndex>0</SortedColumnIndex>
          <SortOrder>0</SortOrder>
          <StartTime>2010-04-26T14:33:15.4293957-07:00</StartTime>
          <EndTime>2010-04-27T14:33:15.4293957-07:00</EndTime>
          <DynamicTimeTicks>864000000000</DynamicTimeTicks>
          <IsDynamic>true</IsDynamic>
          <Is3DMode>false</Is3DMode>
          <ShowAlerts>false</ShowAlerts>
          <ShowMaintenanceMode>false</ShowMaintenanceMode>
          <BaselineMode>false</BaselineMode>
          <ShowPointLabels>false</ShowPointLabels>
          <EnableSmartLabels>true</EnableSmartLabels>
          <RightAngleAxes>false</RightAngleAxes>
          <ClusterSeries>false</ClusterSeries>
          <Title />
          <TitleFont>Microsoft Sans Serif,12,Regular</TitleFont>
          <ChartFont>Microsoft Sans Serif,8.25,Regular</ChartFont>
          <ShowBands>false</ShowBands>
          <BandColor>-1579033</BandColor>
          <ChartType>Line</ChartType>
          <Depth>100</Depth>
          <GapDepth>100</GapDepth>
          <Perspective>10</Perspective>
          <GraphXRotation>0</GraphXRotation>
          <GraphYRotation>0</GraphYRotation>
          <XLabelAngle>0</XLabelAngle>
          <LabelColor>-16777216</LabelColor>
          <LabelFont>Microsoft Sans Serif,8.25,Regular</LabelFont>
          <XAxisVisible>True</XAxisVisible>
          <XShowMajorGridlines>false</XShowMajorGridlines>
          <XShowMinorGridlines>false</XShowMinorGridlines>
          <ShowInterlaceStrips>false</ShowInterlaceStrips>
          <XInterlaceColor>16777215</XInterlaceColor>
          <XShowSideMargin>true</XShowSideMargin>
          <XAxisFont>Microsoft Sans Serif,8.25,Regular</XAxisFont>
          <AutoAxis>true</AutoAxis>
          <AxisMax>100</AxisMax>
          <AxisMin>0</AxisMin>
          <YAxisVisible>True</YAxisVisible>
          <YShowMajorGridlines>true</YShowMajorGridlines>
          <YShowMinorGridlines>false</YShowMinorGridlines>
          <YShowInterlaceStrips>false</YShowInterlaceStrips>
          <YShowSideMargin>true</YShowSideMargin>
          <YAxisFont>Microsoft Sans Serif,8.25,Regular</YAxisFont>
          <BackgroundColor1>-1</BackgroundColor1>
          <BackgroundColor2>-1</BackgroundColor2>
          <GradientType>None</GradientType>
          <Series />
        </Presentation>
        <Target />
      </View>
      <View ID="MPAuthor.PropertyBag.View.MinutesSinceUpdate" Accessibility="Internal" Enabled="true" Target="MPAuthor.PropertyBag.TargetClass" TypeID="SC!Microsoft.SystemCenter.PerformanceViewType" Visible="true">
        <Category>Operations</Category>
        <Criteria>
          <Counter>MinutesSinceUpdate</Counter>
        </Criteria>
        <Presentation>
          <SortedColumnIndex>0</SortedColumnIndex>
          <SortOrder>0</SortOrder>
          <StartTime>2010-04-26T14:33:36.0638172-07:00</StartTime>
          <EndTime>2010-04-27T14:33:36.0638172-07:00</EndTime>
          <DynamicTimeTicks>864000000000</DynamicTimeTicks>
          <IsDynamic>true</IsDynamic>
          <Is3DMode>false</Is3DMode>
          <ShowAlerts>false</ShowAlerts>
          <ShowMaintenanceMode>false</ShowMaintenanceMode>
          <BaselineMode>false</BaselineMode>
          <ShowPointLabels>false</ShowPointLabels>
          <EnableSmartLabels>true</EnableSmartLabels>
          <RightAngleAxes>false</RightAngleAxes>
          <ClusterSeries>false</ClusterSeries>
          <Title />
          <TitleFont>Microsoft Sans Serif,12,Regular</TitleFont>
          <ChartFont>Microsoft Sans Serif,8.25,Regular</ChartFont>
          <ShowBands>false</ShowBands>
          <BandColor>-1579033</BandColor>
          <ChartType>Line</ChartType>
          <Depth>100</Depth>
          <GapDepth>100</GapDepth>
          <Perspective>10</Perspective>
          <GraphXRotation>0</GraphXRotation>
          <GraphYRotation>0</GraphYRotation>
          <XLabelAngle>0</XLabelAngle>
          <LabelColor>-16777216</LabelColor>
          <LabelFont>Microsoft Sans Serif,8.25,Regular</LabelFont>
          <XAxisVisible>True</XAxisVisible>
          <XShowMajorGridlines>false</XShowMajorGridlines>
          <XShowMinorGridlines>false</XShowMinorGridlines>
          <ShowInterlaceStrips>false</ShowInterlaceStrips>
          <XInterlaceColor>16777215</XInterlaceColor>
          <XShowSideMargin>true</XShowSideMargin>
          <XAxisFont>Microsoft Sans Serif,8.25,Regular</XAxisFont>
          <AutoAxis>true</AutoAxis>
          <AxisMax>100</AxisMax>
          <AxisMin>0</AxisMin>
          <YAxisVisible>True</YAxisVisible>
          <YShowMajorGridlines>true</YShowMajorGridlines>
          <YShowMinorGridlines>false</YShowMinorGridlines>
          <YShowInterlaceStrips>false</YShowInterlaceStrips>
          <YShowSideMargin>true</YShowSideMargin>
          <YAxisFont>Microsoft Sans Serif,8.25,Regular</YAxisFont>
          <BackgroundColor1>-1</BackgroundColor1>
          <BackgroundColor2>-1</BackgroundColor2>
          <GradientType>None</GradientType>
          <Series />
        </Presentation>
        <Target />
      </View>
      <View ID="MPAuthor.PropertyBag.View.TargetClass" Accessibility="Internal" Enabled="true" Target="MPAuthor.PropertyBag.TargetClass" TypeID="SC!Microsoft.SystemCenter.StateViewType" Visible="true">
        <Category>StateCollection</Category>
        <Criteria />
      </View>
    </Views>
    <Folders>
      <Folder ID="MPAuthor.PropertyBag.Folder" Accessibility="Internal" ParentFolder="SC!Microsoft.SystemCenter.Monitoring.ViewFolder.Root" />
    </Folders>
    <FolderItems>
      <FolderItem ElementID="MPAuthor.PropertyBag.View.FileSize" Folder="MPAuthor.PropertyBag.Folder" />
      <FolderItem ElementID="MPAuthor.PropertyBag.View.MinutesSinceUpdate" Folder="MPAuthor.PropertyBag.Folder" />
      <FolderItem ElementID="MPAuthor.PropertyBag.View.TargetClass" Folder="MPAuthor.PropertyBag.Folder" />
    </FolderItems>
    <StringResources>
      <StringResource ID="AlertMessageID3c3f53bd716449f58e793397c3a79f5b" />
      <StringResource ID="MPAuthor.PropertyBag.Monitor.FileSize_AlertMessageResourceID" />
      <StringResource ID="MPAuthor.PropertyBag.SimpleEventAlert.AlertMessage" />
    </StringResources>
  </Presentation>
  <LanguagePacks>
    <LanguagePack ID="ENU" IsDefault="true">
      <DisplayStrings>
        <DisplayString ElementID="MPAuthor.PropertyBag">
          <Name>MPAuthor Sample - Property Bag</Name>
          <Description>This management pack provides an example of a script returning multiple values in a property bag.  A single monitor type is used that accepts a parameter to specify the desired property. Also illustrated is the use of data source modules returning different data types.  Rules and monitors can use the data source returning the type they require, while they all share the same script.

The script collects different pieces of data from a file.  The name of the file must be specified in the FileName parameter of any rule or monitor.

All rules and monitors are targeted at a class called MPAuthor.PropertyBag.Target.  This is discovered by creating a registry key at HKLM\SOFTWARE\MPAuthor\PropertyBag. This registry key must be on the same agent computer with the file.</Description>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.DataSource.FileInfo.Performance">
          <Name>MPAuthor FileInfo Data Source (Performance)</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.DataSource.FileInfo.Performance.Optimized">
          <Name>MPAuthor FileInfo Data Source (Optimized Performance)</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.DataSource.FileInfo.PropertyBag">
          <Name>MPAuthor File Info Data Source (Property Bag)</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.Discovery.TargetClass">
          <Name>MPAuthor Discover PropertyBag Target Class</Name>
          <Description />
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.Folder">
          <Name>MPAuthor Sample Property Bag</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.Monitor.FileSize">
          <Name>File Size</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.Monitor.FileSize" SubElementID="UIGeneratedOpStateId1d6e4c4b92f94b49b5859df3418d3df2">
          <Name>OverWarningThreshold</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.Monitor.FileSize" SubElementID="UIGeneratedOpStateId490dfbe6ea8d4a05bd16126d2228ce56">
          <Name>OverErrorThreshold</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.Monitor.FileSize" SubElementID="UIGeneratedOpStateIdb898f77f517946e0912e387de37608c2">
          <Name>UnderThreshold</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.Monitor.FileSize_AlertMessageResourceID">
          <Name>File size</Name>
          <Description>Please see the alert context for details.</Description>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.MonitorType.FileInfo">
          <Name>File Info Monitor Type</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.Probe.FileInfo">
          <Name>MPAuthor File Info Probe Action</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.Rule.CollectFileSize">
          <Name>Collect file size</Name>
          <Description />
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.Rule.CollectMinutesSinceUpdate">
          <Name>Collect Minutes Since Update</Name>
          <Description />
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.TargetClass">
          <Name>MPAuthor PropertyBag Target</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.View.FileSize">
          <Name>File Size</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.View.MinutesSinceUpdate">
          <Name>Minutes Since Update</Name>
        </DisplayString>
        <DisplayString ElementID="MPAuthor.PropertyBag.View.TargetClass">
          <Name>PropertyBag Target</Name>
        </DisplayString>
      </DisplayStrings>
    </LanguagePack>
  </LanguagePacks>
</ManagementPack>
