此脚本运行,如果返回“erro”,则会在 SCOM 中生成警报。警报设置为在监视器恢复正常状态时解决。我已经使用 cscript 测试了该脚本,它在每个状态下都返回正确的值。我很困惑为什么它会在“erro”上生成警报,但在“ok”上不会自动解决:
Option Explicit
On Error Resume Next
Dim objFSO
Dim TargetFile
Dim objFile
Dim oAPI, oBag
Dim StateDataType
Dim FileSize
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
TargetFile = "\\server\share\file.zip"
Set objFSO = CreateObject("scripting.filesystemobject")
Set objFile = objFSO.GetFile(TargetFile)
FileSize = objFile.Size / 1024
If FileSize < 140000 Then
Call oBag.AddValue("State", "erro")
Else
Call oBag.AddValue("State", "ok")
End If
Call oAPI.AddItem(oBag)
Call oAPI.Return(oBag)
不健康的表达: Property[@Name='State'] Equals erro
健康表达: Property[@Name='State'] 等于 ok
如果有人能阐明我可能遗漏的内容,那就太好了!
答案1
我们仍在努力理解 SCOM,并且我们也对此进行了一些努力。
触发“不健康”状态似乎发生得相当快,但触发恢复“健康”似乎发生在我们所说的 SCOM 时间。这种情况确实会发生,但肯定不会很快发生。我一直把这归咎于我们开发实验室的规模。
该脚本看起来没问题,但您也可以在操作管理器事件日志中验证脚本执行期间没有问题。例如,如果您正在访问文件共享,并且没有设置运行方式帐户,则如果该服务器计算机帐户没有文件共享的权限,则可能会失败。
这会导致脚本出错,但监视器将保持正常。
它可能会成功,因为当您运行它时,它会在您的用户帐户下执行,该帐户可能有权访问文件共享。
答案2
答案取决于监视器是否正常工作。监视器是否会根据需要更改状态,或者问题解决后监视器是否不会恢复到正常状态?
如果监视器正在工作但警报未解决:请检查单元监视器的 XML,并确保<AutoResolve>true</AutoResolve>
在监视器定义中看到。在创作控制台中,您还可以设置此自动解决属性。