Hey Guys,
I made a script for Scom monitoring with powershell.
$ScomAPI = New-Object -comObject "MOM.ScriptAPI"
$PropertyBag = $ScomAPI.CreatePropertyBag()
$sqlConn = New-Object System.Data.SqlClient.SqlConnection
$sqlConn.ConnectionString = “Server=*****\*******;Integrated Security=true;Initial Catalog=n*****”
$sqlConn.Open()
$sqlcmd = New-Object System.Data.SqlClient.SqlCommand
$sqlcmd.Connection = $sqlConn
$query = "
SELECT count(*)
FROM HL7_Outbox
"
$sqlcmd.CommandText = $query
$adp = New-Object System.Data.SqlClient.SqlDataAdapter $sqlcmd
$SqlQeuryOutput = $sqlcmd.ExecuteScalar()
$Result = "bad"
if ($SqlQeuryOutput -lt "1" ) {
$Result = "good"
}
Write-EventLog -LogName 'Operations Manager' -Source "MyScript" -EventId 1 -EntryType Warning -Message "This is a test 2.0, the state of this monitor is $Result, $SqlQeuryOutput, "
$sqlConn.Close()
# fill pb
$PropertyBag.AddValue("Result",$Result)
# Send output to SCOM
$PropertyBag
The entire script works perfect in powershell.
after i made it the script work on powershell, i made a two-state monitor from it. but once the monitor was put in scom, the monitor is giving me the exact opposite awnser i am getting from powershell, so powershell and the two-state monitor have the exact same script, but different answers. how is this possible?