ReportWeb: Worker

Dieses Skript ist für die Ausführung des Reports zuständig. Es erhält als Parameter den Namen des Reports und schafft die Voraussetzungen, um dann den eigentlichen Report zu starten und die Ergebnisse einzusammeln. Es macht aber noch einiges mehr, was primär der parallelen Verarbeitung geschuldet ist.

  • Mehrfachaufruf verhindern
    Es prüft z.B., dass der Report nicht aktiv ist. Dazu legt es beim Start eine LOCK-Datei an und löscht diese nach dem Ausführen wieder. Zudem prüft es, wann der Report das letzte mal beendet wurde. Auch dies erfolgt anhand einer Status-Datei, deren Datum herangezogen wird. So kann über die Konfiguration verhindert werden, dass ein Report zu oft gestartet wird.
  • Drosseln
    Es ist in Ordnung, wenn mehrere Reports parallel laufen. Allerdings sollte ein gewisses Limit nicht überschritten werden. Das Skript könnte also einen Report anhalten, bis genug Ressourcen wieder frei sind. Auch gibt es Module (Stichwort Exchange PowerShell Throttling), die den parallelen Start zu vieler Reports verbieten.
  • Debugging
    Das Modul stellt auch Debug-Funktionen bereit, indem es die Ausgaben von "Write-Host" durch eine eigene Funktion ersetzt und damit die Ausgaben des Reportmoduls abfängt und als Protokoll bereit stellen kann.
  • Rückgabe einsammeln
    Das Skript sammelt zuletzt die Ergebnisse des Report-Modules ein und fügt diese in das angegebene Template ein. Das Ergebnis wird dann in die ebenfalls angegebene Ausgabedatei abgelegt.
  • Trigger für Summary anlegen.

Die Steuerung dieses Skript erfolgt über eine CSV-Datei, die alle erforderlichen Parameter für jeden Report enthält.

Auch wenn die Beschreibung hier eher kurz gehalten ist, macht dieses Skript schon einen großen Teil der Arbeit. Bei Gelegenheit werde ich hier noch etwas mehr dazu schreiben.