我正在寻找一种简单的方法来从 SCOM 监控 RabbitMQ 队列。具体来说,我希望在特定队列(我们用于“死信”的队列)不为空时收到通知。
RabbitMQ 有一个 RESTful Web API(RabbitMQ 管理 HTTP API),它将返回所需的数据;它仅支持 JSON。我已经在 .NET 库中包装了对该 API 的调用。我编写了一个 PowerShell 脚本来连接该脚本和 SCOM,但我们的网络管理员无法让它工作。他更喜欢 VBScript 解决方案。
我可以将 .NET 库公开给 COM 并从 VBScript 调用它。这似乎太复杂了。有没有更简单的方法?
答案1
您的网络管理员为什么不直接通过 VBScript 调用您的 powershell 脚本?我知道这无助于解决荒谬的复杂性,但这可能是最简单的解决方案。告诉他编写一个包含这段简单 vbs 的自定义监视器:
Set objShell = CreateObject("WScript.Shell")
strPoSHCmd = "powershell.exe -noprofile -command C:\path\to\script.ps1"
objShell.Run strPoSHCmd
编辑C:\path\to\script.ps1
以满足您的需要。您还可以通过创建 MOM.ScriptAPI propertyBag 让 vbscript 将值从 PowerShell(假设您的 PS 脚本返回一个值)返回到 SCOM,如下所示:
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Set objShell = CreateObject("WScript.Shell")
strPoSHCmd = "powershell.exe -noprofile -command C:\path\to\script.ps1"
PSReturn = objShell.Run strPoSHCmd
Call oBag.AddValue("Output",PSReturn)
Call oAPI.Return(oBag)