Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
If WScript.Arguments.Count <> 1 then
Call oAPI.LogScriptEvent("SCSM2012DWHighWaterMark.vbs", 3000, 4, "OLEDB probe did not retrieve the High Watermark value from the DB. Terminating Script.")
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","OLEDB probe did not return the High Watermark value from the DW Database. Check connectivity and Run As Profile configuration.")
Call oAPI.Return(oBag)
WScript.Quit()
End If
iHighWaterMark = CInt(WScript.Arguments(0))
'Call oAPI.LogScriptEvent("SCSM2012DWHighWaterMark.vbs", 3000, 4, "Starting query of High Watermark Value")
Dim oReg, iResult
Set oReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
If Err <> 0 Then
Call oAPI.LogScriptEvent("SCSM2012DWHighWaterMark.vbs", 3000, 4, "Unable to bind to WMI registry provider. Terminating Script.")
Call oAPI.Return(oBag)
WScript.Quit
End if
Const HKLM = &H80000002
If iHighWaterMark <> 0 then
Dim iValue1, iValue2, iValue3
strKeyRoot = "SOFTWARE\Microsoft\Microsoft Operations Manager\3.0"
'Attempt to write key, if it already exists existing content is preserved.
iResult = oReg.CreateKey(HKLM, strKeyRoot & "\SCSMMP")
If iResult = 0 then
Dim strValueName, arrValues
strValueName = "HighWaterMarkDeltas"
iResult = oReg.GetMultiStringValue(HKLM,strKeyRoot & "\SCSMMP",strValueName,arrValues)
If iResult = 2 then
arrValues = Array(CStr(0),CStr(0),CStr(iHighWaterMark))
iResult = oReg.SetMultiStringValue(HKLM,strKeyRoot & "\SCSMMP",strValueName,arrValues)
If iResult = 0 then
Call oBag.AddValue("Status", "OK")
Call oBag.AddValue("MessageText","Deltas for the High Watermark do not exist. Storing todays value of " & iHighWaterMark)
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Error Storing delta values for High Watermark at " & strKeyRoot & "\SCSMMP\" & strValueName)
End If
ElseIf iResult = 0 then
iValue1 = CInt(arrValues(0))
iValue2 = CInt(arrValues(1))
iValue3 = CInt(arrValues(2))
arrValues = Array(CStr(iValue2),CStr(iValue3),CStr(iHighWaterMark))
iResult = oReg.SetMultiStringValue(HKLM,strKeyRoot & "\SCSMMP",strValueName,arrValues)
If iResult = 0 then
If iHighWaterMark > iValue2 then
Call oBag.AddValue("Status", "OK")
Call oBag.AddValue("MessageText","Value of " & iHighWaterMark & " is higher than " & iValue2)
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Value of " & iHighWaterMark & " is not higher than " & iValue2)
End if
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Error Storing delta values for High Watermark at " & strKeyRoot & "\SCSMMP\" & strValueName)
End If
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Error Retrieving delta values for High Watermark at " & strKeyRoot & "\SCSMMP\" & strValueName)
End If
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Could not Create key in registry to store delta values at " & strKeyRoot & "\SCSMMP")
End if
Else
Call oBag.AddValue("Status", "ERROR")
Call oBag.AddValue("MessageText","Could not retrieve High Watermark from Datawarehouse database.")
End if