none
SCOM mehrere Werte mit einer "Regel" überwachen und als Graph anzeigen lassen (rule return multiple values)

    Frage

  • Hallo,

    zur Zeit teste ich gerade die Fähigkeiten von SCOM - Regeln. Da ich schon ein Script für S.M.A.R.T Monitoring geschrieben habe (VBS) würde ich es gerne in SCOM mit einbauen. Allerdings stelle ich fest, dass SCOM nur einen Wert pro Instanz zulässt. 

    Nun bin ich kein großer Forenfreund, sondern bing/Google mir die Problemlösung zurecht. Auf: 

    https://social.technet.microsoft.com/Forums/systemcenter/en-US/7eac55e6-e577-4e46-8c76-2874c06d32e6/need-to-return-multiple-performance-items-in-a-probe-script-alternatives?forum=operationsmanagerauthoring

    fand ich in meinen Augen auch eine plausible Lösung (die Antwort von Mike Eisenstein), die aber leider entweder keine Werte, oder nur die Werte des zuletzt hinzugefügten Items wiedergibt.

    Habe ich etwas übersehen, oder sollte ich die andere Lösungsmöglichkeit versuchen, die dazu führt, dass ich direkt eine .xml - Datei erstelle?

    Im Anhang findet ihr meinen Code.

    Vielen Dank für die Hilfe

    option explicit
    
    dim objWMIService
    dim colItems, objItem, queryAvailableMemory, queryTotalMemory, queryFreeSpace
    dim strComputer, totalMemory, availableMemory, usedMemory, freeSpace, userName, caption
    
    strComputer = "."
    queryTotalMemory = "SELECT * FROM Win32_ComputerSystem"
    queryAvailableMemory = "SELECT * FROM Win32_PerfFormattedData_PerfOS_Memory"
    queryFreeSpace = "SELECT * FROM Win32_LogicalDisk"
    
    
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
    
    Set colItems = objWMIService.ExecQuery(_
        queryTotalMemory)
    
    For Each objItem in colItems 
        totalMemory = (objItem.TotalPhysicalMemory / 1048576)
        userName = objItem.UserName
    Next
    
    Set colItems = objWMIService.ExecQuery( _
        queryAvailableMemory,,48)
    
    For Each objItem in colItems 
        availableMemory =  objItem.AvailableMBytes
    Next
    
    usedMemory = totalMemory - availableMemory
    WScript.Echo "Used " & usedMemory & " Total " &  totalMemory & " Username " & userName
    
    ' Dim oAPI, oBag, oBag2
    
    ' Set oAPI = CreateObject("MOM.ScriptAPI")
    ' Set oBag = oAPI.CreatePropertyBag(2)
    
    ' oBag.AddValue "Value",userName
    ' oBag.AddValue "PerfValue",usedMemory
    
    ' oAPI.AddItem(oBag)
    
    Set colItems = objWMIService.ExecQuery( _
        queryFreeSpace,,48)
    
    For Each objItem in colItems 
        if objItem.Caption = "C:" then
            freeSpace =  objItem.FreeSpace
            caption = objItem.Caption
        end if
    Next
    
    WScript.Echo "freeSpace " & freeSpace & " Caption " &  caption 
    
    ' Set oBag = oAPI.CreatePropertyBag(2)
    ' oBag.AddValue "Value",caption
    ' oBag.AddValue "PerfValue",freeSpace
    
    
    ' oAPI.AddItem(oBag) 
    
    ' oAPI.ReturnItems					

    Dienstag, 13. Juni 2017 13:02

Antworten

  • Ich habe heute soeben die Lösung meines Problems gefunden.

    Es gibt nämlich 2 wesentliche Fehler in meinem Skript.

    Folgende Fehler 

    Set oAPI = CreateObject("MOM.ScriptAPI")
    Set oBag = oAPI.CreatePropertyBag(2) ' hier liegt der 1. Fehler
    
    oBag.AddValue "Value",userName
    oBag.AddValue "PerfValue",usedMemory
    
    oAPI.AddItem(oBag)

    Die Methode mit dem Parameter "2" wird nicht akzeptiert. 

    Weiterhin machte Mike Eisenstein (https://groups.google.com/forum/#!topic/microsoft.public.opsmgr.authoring/WzH6-EW7yNc) einen anderen Nutzer darauf aufmerksam, dass man das vorhergehende Property Bag auf "Nothing" setzen sollte. Dass heißt:

    Set oBag = Nothing
    Set oBag2 = oAPI.CreatePropertyBag()
    oBag2.AddValue "Value",caption
    oBag2.AddValue "PerfValue",freeSpace
    
    
    oAPI.AddItem(oBag2) 
    
    oAPI.ReturnItems	

    Somit gibt SCOM jetzt alle gewünschte Werte zurück. Nun kann ich dieses Skript für S.M.A.R.T. - Abfragen umgestalten.

    Donnerstag, 15. Juni 2017 09:04

Alle Antworten

  • Hallo Benjamin Thiele,

    da das Thema inhaltlich besser in das MSDN Forum passt, werde ich es dorthin verschieben. Vielleicht dort hat jemand mehr Ehrfahrung.

    Vielen Dank für ihr Verständnis!

    Mit freundlichen Grüßen

    Michaela


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 14. Juni 2017 09:10
  • Ich habe heute soeben die Lösung meines Problems gefunden.

    Es gibt nämlich 2 wesentliche Fehler in meinem Skript.

    Folgende Fehler 

    Set oAPI = CreateObject("MOM.ScriptAPI")
    Set oBag = oAPI.CreatePropertyBag(2) ' hier liegt der 1. Fehler
    
    oBag.AddValue "Value",userName
    oBag.AddValue "PerfValue",usedMemory
    
    oAPI.AddItem(oBag)

    Die Methode mit dem Parameter "2" wird nicht akzeptiert. 

    Weiterhin machte Mike Eisenstein (https://groups.google.com/forum/#!topic/microsoft.public.opsmgr.authoring/WzH6-EW7yNc) einen anderen Nutzer darauf aufmerksam, dass man das vorhergehende Property Bag auf "Nothing" setzen sollte. Dass heißt:

    Set oBag = Nothing
    Set oBag2 = oAPI.CreatePropertyBag()
    oBag2.AddValue "Value",caption
    oBag2.AddValue "PerfValue",freeSpace
    
    
    oAPI.AddItem(oBag2) 
    
    oAPI.ReturnItems	

    Somit gibt SCOM jetzt alle gewünschte Werte zurück. Nun kann ich dieses Skript für S.M.A.R.T. - Abfragen umgestalten.

    Donnerstag, 15. Juni 2017 09:04