Community.PowerShellMonitoring.PageSet.Template.PowerShellPerfCollection (UIPageSet)

Element properties:

Type DefinitionCommunity.PowerShellMonitoring.Template.PowerShellRule.PerfCollection

Source Code:

<UIPageSet ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellPerfCollection" TypeDefinitionID="Community.PowerShellMonitoring.Template.PowerShellRule.PerfCollection">
<UIPageReferences>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellPerfCollection.General" PageID="MSR!Microsoft.SystemCenter.RuleTemplates.RuleGeneralPage" Usage="CreationOnly">
<InputParameters/>
<InputTransform>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:element name="Category">
<xsl:copy>PerformanceCollection</xsl:copy>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
</InputTransform>
</UIPageReference>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellPerfCollection.Schedule" PageID="System!System.SimpleSchedulerPage" Usage="CreationOnly">
<InputTransform>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:element name="SimpleReccuringSchedule">
<xsl:element name="Interval"><xsl:attribute name="Unit">Minutes</xsl:attribute>15
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
</InputTransform>
</UIPageReference>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellPerfCollection.Script" PageID="Windows!Microsoft.Windows.ScriptPage" Usage="CreationOnly">
<InputParameters>
<ScriptName>MyScript.ps1</ScriptName>
<ScriptBody><Script># Any Arguments specified will be sent to the script as a single string.
# If you need to send multiple values, delimit them with a space, semicolon or other seperator and then use split.
param([string]$Arguments)

$ScomAPI = New-Object -comObject "MOM.ScriptAPI"

# Collect your performance counter here. Note that in order to support the DW this script MUST only return a single
# object/counter and those must be static values. You can return multiple instances just fine though.

$Instances = @("Instance1", "Instance2")
$Metric = 42

Foreach ($Instance in $Instances)
{
$PropertyBag = $ScomAPI.CreatePropertyBag()
$PropertyBag.AddValue("Metric", $Metric)
$PropertyBag.AddValue("Instance",$Instance)

# Send output to SCOM
$PropertyBag
}</Script></ScriptBody>
</InputParameters>
<InputTransform>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:copy-of select="/ScriptName"/>
<xsl:copy-of select="/Arguments"/>
<xsl:copy-of select="/ScriptBody"/>
<xsl:copy-of select="/TimeOutSeconds"/>
</xsl:template>
</xsl:stylesheet>
</InputTransform>
</UIPageReference>
<UIPageReference ID="Microsoft.SystemCenter.RuleTemplates.ScriptPerfCollection.PageSet.PageReference4" PageID="Windows!Microsoft.Windows.PerformanceMapperPage" Usage="CreationOnly">
<InputParameters>
<ObjectName>MyObject</ObjectName>
<CounterName>MyCounter</CounterName>
<InstanceName>$Data/Property[@Name='Instance']$</InstanceName>
<Value>$Data/Property[@Name='Metric']$</Value>
</InputParameters>
<InputTransform>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:copy-of select="/ObjectName"/>
<xsl:copy-of select="/CounterName"/>
<xsl:copy-of select="/InstanceName"/>
<xsl:copy-of select="/Value"/>
</xsl:template>
</xsl:stylesheet>
</InputTransform>
</UIPageReference>
</UIPageReferences>
<OutputTransform>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:element name="Configuration">
<xsl:copy-of select="/ID"/>
<xsl:copy-of select="/Name"/>
<xsl:copy-of select="/Enabled"/>
<xsl:copy-of select="/Description"/>
<xsl:copy-of select="/Target"/>
<xsl:copy-of select="/Category"/>
<xsl:copy-of select="/LocaleId"/>
<xsl:element name="IntervalSeconds">
<xsl:variable name="RawInterval" select="/SimpleReccuringSchedule/Interval"/>
<xsl:variable name="Units" select="/SimpleReccuringSchedule/Interval/@Unit"/>
<xsl:choose>
<xsl:when test="not(boolean($Units)) or $Units='Seconds'">
<xsl:value-of select="$RawInterval"/>
</xsl:when>
<xsl:when test="$Units='Minutes'">
<xsl:value-of select="$RawInterval*60"/>
</xsl:when>
<xsl:when test="$Units='Hours'">
<xsl:value-of select="$RawInterval*3600"/>
</xsl:when>
<xsl:when test="$Units='Days'">
<xsl:value-of select="$RawInterval*86400"/>
</xsl:when>
</xsl:choose>
</xsl:element>
<xsl:element name="SyncTime">
<xsl:value-of select="/SimpleReccuringSchedule/SyncTime"/>
</xsl:element>
<xsl:element name="ScriptName">
<xsl:value-of select="/ScriptName[1]"/>
</xsl:element>
<xsl:element name="Arguments">
<xsl:value-of select="/Arguments[1]"/>
</xsl:element>
<xsl:element name="ScriptBody">
<xsl:value-of select="/ScriptBody[1]"/>
</xsl:element>
<xsl:element name="TimeoutSeconds">
<xsl:value-of select="/TimeoutSeconds[1]"/>
</xsl:element>
<xsl:copy-of select="/ObjectName"/>
<xsl:copy-of select="/CounterName"/>
<xsl:copy-of select="/InstanceName"/>
<xsl:copy-of select="/Value"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
</OutputTransform>
</UIPageSet>