Crash-Dumps, Fehlerdateien, hängende Exporte: Ein Monitor soll melden, wenn eine bestimmte Datei auftaucht. Warum CIM_DataFile keine gute Idee ist und wie ein parametrisierter Skriptmonitor aussieht.
Die Anforderung aus der Community: Ein Monitor soll prüfen, ob in einem bestimmten Ordner Dateien mit der Endung .dmp liegen – ein Hinweis auf abgestürzte Prozesse. Der erste Ansatz war ein WMI-Ereignismonitor mit einer Abfrage auf CIM_DataFile.
Warum nicht per WMI?
SELECT * FROM CIM_DataFile WHERE Drive = 'C:' AND Path = '\\ProgramData\\Hersteller\\' AND Extension = 'dmp'
Technisch funktioniert das, in der Praxis ist es keine gute Idee:
CIM_DataFile-Abfragen sind langsam und belasten das System, vor allem bei vielen Dateien.- WMI-Abfragen im Agenten führen bei Zeitüberschreitungen schnell zu Laufzeitfehlern und Folgealarmen.
- Die Rückgabe eignet sich schlecht für einen klaren Zustand „gut/schlecht“.
Besser: ein Skriptmonitor mit Property Bag
Ein kleines Skript prüft den Ordner und liefert einen eindeutigen Wert an SCOM zurück. Wichtig ist der Hinweis aus der Community: Pfad und Dateiendung als Parameter übergeben, damit dasselbe Skript für beliebige Ordner wiederverwendbar ist.
param(
[string]$Path,
[string]$Filter = '*.dmp'
)
$api = New-Object -ComObject 'MOM.ScriptAPI'
$bag = $api.CreatePropertyBag()
$files = @(Get-ChildItem -LiteralPath $Path -Filter $Filter -File -ErrorAction SilentlyContinue)
$bag.AddValue('FileCount', $files.Count)
$bag.AddValue('FileExists', [int]($files.Count -gt 0))
$bag.AddValue('Newest', ($files | Sort-Object LastWriteTime -Descending | Select-Object -First 1).Name)
$bag
Die Zustandsausdrücke im Monitor
| Zustand | Parameter | Operator | Wert |
|---|---|---|---|
| Fehlerhaft | Property[@Name='FileExists'] | Gleich | 1 |
| Fehlerfrei | Property[@Name='FileExists'] | Gleich | 0 |
Achtung
Achten Sie auf identische Parameternamen in beiden Ausdrücken. Ein Tippfehler – etwa DumpfileExis statt DumpfileExist – führt dazu, dass der Monitor nie in den fehlerfreien Zustand zurückkehrt. Genau dieser Fehler hatte sich im ursprünglichen Community-Beispiel eingeschlichen.
Mit Newest und FileCount im Alarmtext sieht der Operator sofort, welche Datei gefunden wurde.
Alternative: Orchestrator oder Automatisierung
Soll beim Auftauchen einer Datei nicht nur alarmiert, sondern auch gehandelt werden – etwa die Datei verschieben, ein Ticket anlegen und einen Dienst neu starten –, ist ein Runbook in System Center Orchestrator oder Azure Automation oft die bessere Wahl. SCOM erkennt, das Runbook handelt.
Heute
Der ursprüngliche Lösungsvorschlag war ein VBScript. Die PowerShell-Variante funktioniert in Operations Manager 2019, 2022 und 2025 und lässt sich mit der VSAE als wiederverwendbarer Monitortyp mit Parametern für Pfad und Filter umsetzen.