Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState (UIPageSet)

Element properties:

Type DefinitionCommunity.PowerShellMonitoring.UnitMonitors.PowerShellThreeState

Source Code:

<UIPageSet ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState" TypeDefinitionID="Community.PowerShellMonitoring.UnitMonitors.PowerShellThreeState">
<UIPageReferences>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.General" PageID="Health!System.Health.MonitorGeneralPage" Usage="CreationAndUpdate"/>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.Schedule.Create" 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>
<Title ID="Microsoft.Windows.ScriptBased.ThreeStateMonitorPageSet.Reference2C.Title"/>
<TabName ID="Microsoft.Windows.ScriptBased.ThreeStateMonitorPageSet.Reference2C.TabName"/>
</UIPageReference>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.Schedule.Update" PageID="System!System.SimpleSchedulerPage" Usage="UpdateOnly">
<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:value-of select="/IntervalSeconds"/>
</xsl:element>
<xsl:if test="boolean(string-length(/SyncTime))">
<xsl:copy-of select="/SyncTime"/>
</xsl:if>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
</InputTransform>
<Title ID="Microsoft.Windows.ScriptBased.ThreeStateMonitorPageSet.Reference2U.Title"/>
<TabName ID="Microsoft.Windows.ScriptBased.ThreeStateMonitorPageSet.Reference2U.TabName"/>
</UIPageReference>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.Script" PageID="Windows!Microsoft.Windows.ScriptPage" Usage="CreationAndUpdate">
<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"
$PropertyBag = $ScomAPI.CreatePropertyBag()

# Example of use below, in this case return the length of the string passed in and we'll set health state based on that.
# Since the health state comparison is string based in this template we'll need to create a state value and return it.
# Ensure you return a unique value per health state (e.g. a service status), or a unique combination of values.

$PropertyBag.AddValue("MessageText",$Arguments)
$PropertyBag.AddValue("Length",$Arguments.length)

if($Arguments.length -gt 10) {
$PropertyBag.AddValue("State","OverUpperThreshold")
}
elseif($Arguments.Length -gt 5) {
$PropertyBag.AddValue("State","OverMiddleThreshold")
}
else
{
$PropertyBag.AddValue("State","UnderThreshold")
}

# 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>
<Title ID="Microsoft.Windows.ScriptBased.ThreeStateMonitorPageSet.Reference3.Title"/>
<TabName ID="Microsoft.Windows.ScriptBased.ThreeStateMonitorPageSet.Reference3.TabName"/>
</UIPageReference>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.UnhealthyExpression" PageID="System!System.ExpressionBuilderPage" Usage="CreationAndUpdate">
<InputParameters>
<DataType>System.PropertyBagData</DataType>
</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:choose>
<xsl:when test="count(/UnhealthyExpression) &gt; 0">
<xsl:element name="Expression">
<xsl:copy-of select="/UnhealthyExpression/*"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="Expression">
<xsl:element name="SimpleExpression">
<xsl:element name="ValueExpression">
<xsl:element name="XPathQuery">Property[@Name='State']</xsl:element>
</xsl:element>
<xsl:element name="Operator">Equal</xsl:element>
<xsl:element name="ValueExpression">
<xsl:element name="Value">OverUpperThreshold</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
</InputTransform>
<Title ID="Title"/>
<TabName ID="TabName"/>
</UIPageReference>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.WarningExpression" PageID="System!System.ExpressionBuilderPage" Usage="CreationAndUpdate">
<InputParameters>
<DataType>System.PropertyBagData</DataType>
</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:choose>
<xsl:when test="count(/WarningExpression) &gt; 0">
<xsl:element name="Expression">
<xsl:copy-of select="/WarningExpression/*"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="Expression">
<xsl:element name="SimpleExpression">
<xsl:element name="ValueExpression">
<xsl:element name="XPathQuery">Property[@Name='State']</xsl:element>
</xsl:element>
<xsl:element name="Operator">Equal</xsl:element>
<xsl:element name="ValueExpression">
<xsl:element name="Value">OverMiddleThreshold</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
</InputTransform>
<Title ID="Title"/>
<TabName ID="TabName"/>
</UIPageReference>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.HealthyExpression" PageID="System!System.ExpressionBuilderPage" Usage="CreationAndUpdate">
<InputParameters>
<DataType>System.PropertyBagData</DataType>
</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:choose>
<xsl:when test="count(/HealthyExpression) &gt; 0">
<xsl:element name="Expression">
<xsl:copy-of select="/HealthyExpression/*"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="Expression">
<xsl:element name="SimpleExpression">
<xsl:element name="ValueExpression">
<xsl:element name="XPathQuery">Property[@Name='State']</xsl:element>
</xsl:element>
<xsl:element name="Operator">Equal</xsl:element>
<xsl:element name="ValueExpression">
<xsl:element name="Value">UnderThreshold</xsl:element>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
</InputTransform>
<Title ID="Title"/>
<TabName ID="TabName"/>
</UIPageReference>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.StateConfig" PageID="Health!System.Health.OperationalStatesConfigPage" Usage="CreationAndUpdate">
<InputParameters>
<Healthy>Success</Healthy>
<Warning>Warning</Warning>
<Unhealthy>Error</Unhealthy>
</InputParameters>
</UIPageReference>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.Alert" PageID="Health!System.Health.AlertingPage" Usage="CreationAndUpdate"/>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.Diagnostics" PageID="Health!System.Health.DiagnosticAndRecoveryPage" Usage="UpdateOnly"/>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.ProductKnowledge" PageID="Health!System.Health.ProductKnowledgePage" Usage="UpdateOnly"/>
<UIPageReference ID="Community.PowerShellMonitoring.PageSet.Template.PowerShellMonitor.ThreeState.Page.CompanyKnowledge" PageID="Health!System.Health.CompanyKnowledgePage" Usage="UpdateOnly"/>
</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="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="ScriptBody">
<xsl:value-of select="/ScriptBody[1]"/>
</xsl:element>
<xsl:element name="Arguments">
<xsl:value-of select="/Arguments[1]"/>
</xsl:element>
<xsl:element name="TimeoutSeconds">
<xsl:value-of select="/TimeoutSeconds[1]"/>
</xsl:element>
<xsl:element name="UnhealthyExpression">
<xsl:copy-of select="/Expression[1]/*"/>
</xsl:element>
<xsl:element name="WarningExpression">
<xsl:copy-of select="/Expression[2]/*"/>
</xsl:element>
<xsl:element name="HealthyExpression">
<xsl:copy-of select="/Expression[3]/*"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
</OutputTransform>
</UIPageSet>