#MOMScript API
$oAPI = New-Object -ComObject "MOM.ScriptAPI"
#Property Bag for result
$oBag = $oAPI.CreatePropertyBag()
#Connect to SCOM management group
Load-SDK
$MGConnSetting = New-Object Microsoft.EnterpriseManagement.ManagementGroupConnectionSettings($Env:COMPUTERNAME)
$MG = New-Object Microsoft.EnterpriseManagement.ManagementGroup($MGConnSetting)
#work out alert criteria
#severity
If ($CloseInfoAlerts -ieq "false" -and $CloseWarningAlerts -ieq "false" -and $CloseCriticalAlerts -ieq "false")
{
#Incorrect configuration detected. no point to keep running if all 3 severities are excluded
$oAPI.LogScriptEvent("Close-AgedRuleAlerts.ps1", 9900, 2, "Incorrect configuration detected for the OpsMgr Self Maintenance Close Aged Rule Generated Alerts Rule. All 3 alert severities are configured to be excluded!" )
} else {
$strSeverityQuery = $null
If ($CloseInfoAlerts -ieq "false")
{
$strSeverityQuery = "Severity <> 0"
}
If ($CloseWarningAlerts -ieq "false")
{
if ($strSeverityQuery)
{
$strSeverityQuery = "$strSeverityQuery AND Severity <> 1"
} else {
$strSeverityQuery = "Severity <> 1"
}
}
If ($CloseCriticalAlerts -ieq "false")
{
if ($strSeverityQuery)
{
$strSeverityQuery = "$strSeverityQuery AND Severity <> 2"
} else {
$strSeverityQuery = "Severity <> 2"
}
}
#by default, use TimeRaised date
$EarliestDate = (Get-Date).AddDays(-$DaysToKeep)
If ($UseLastModifiedDate -ieq "true")
{
#use LastModified date instead of TimeRaised date if specified
$strCriteria = "ResolutionState <>`'255`' AND IsMonitorAlert = 'False' AND LastModified <= `'$EarliestDate`'"
} else {
$strCriteria = "ResolutionState <>`'255`' AND IsMonitorAlert = 'False' AND TimeRaised <= `'$EarliestDate`'"
}
If ($strSeverityQuery)
{
$strCriteria = "$strCriteria AND $strSeverityQuery"
}