Teams-Webhooks per PowerShell – modernes Alerting - Teil 2

Inhaltsverzeichnis

Post Featured Image

SendMessage2Channel- Die Elegantere Art Teams-Webhooks zu versenden

Im Artikel "Teams-Webhooks per PowerShell - modernes Alerting - Teil 1" habe ich dir gezeigt, wie man mittels PowerShell ein zeitgemäßes Alerting an Teams gestalten kann. Sogenannte Webhooks können von der PowerShell versendet und in Teams empfangen werden, sodass verschiedenste Alarme oder andere Informationen im Teams-Channel erscheinen:

Screenshot: PowerShell Alert in einem Teams-Channel

PowerShell-Alert als Message-Card in einem Teams-Channel

Um diese sogenannten Message-Cards zu erzeugen, muss deren Struktur in JSON beschrieben werden. Zwar ist es möglich die notwendigen Informationen in eine Hashtable zu definieren und anschließend in JSON zu konvertieren, dennoch ist dieses Vorgehen (vorallem für Anfänger) recht komplex und wirkt unschön.

ScriptRunner bietet in den ScriptRunner ActionPacks für genau diesen Anwendungsfall eine eigene Funktion an, welche sich in der MSTLibrary versteckt.

Hinweis: Die ScriptRunner ActionsPacks sind frei verfügbare Scripte und Funktionen, welche viele Probleme eines Admins lösen. Für sämtliche Use Cases und Systeme ist Code vorhanden, der einfach kostenfrei über GitHub bezogen und verwendet werden kann - sogar ohne die ScriptRunner-Anwendung. Ich kann dir wirklich empfehlen durch die Sammlung zu schauen, da hier wirklich für jeden etwas dabei ist!

Die MSTLibrary.ps1-Datei kann direkt aus der GitHub-Weboberfläche heruntergeladen und verwendet werden. Voraussetzung für die Verwendung ist das PowerShell-Modul MicrosoftTeams, welches du mit folgender Code-Zeile direkt in der PowerShell installieren kannst:

Install-Module -Name MicrosoftTeams

Neben dem Teams-Modul benötigst du natürlich auch wieder eine Teams-URL für die Webhooks. Wie du eine solche generierst, habe ich im ersten Artikel dieser Reihe gezeigt.

Nun sind wir startklar für einen ersten Testlauf: In der MSTLibrary befindet sich die Funktion SendMessage2Channel, die es uns ermöglicht Message-Cards mit nur einer Code-Zeile zu senden.

Die Funktion bietet das Entgegennehmen verschiedener Parameter an, welche sie anschließend verarbeitet. Die Parameter wie Titel, Message, etc. werden dabei in einer Hashtable zusammengeführt, zu JSON formatiert und an die Teams-URL gesendet. Für das Versenden sind damit zwei Parameter verpflichtend: WebHook und Message. Eine weitere schöne Funktion ist die Farbwahl: standardmäßig gibt es die Farben "grün", "orange" und "rot" zur Auswahl, womit beispielsweise Kritikalität eines Alerts definiert werden kann - so könnte man als Konvention festlegen, dass die Farbe Grün eine reine Information kennzeichnet, die Farbe Orange eine Warnung darstellt und rot für Fehler steht. Die Farben werden durch ein "ValidateSet" auch über die Autovervollständigung mit der TAB-Taste erkannt.

Zur grafischen Darstellung der Attribute, habe ich im folgenden Code-Beispiel die Werte den zugehörigen Parametern gleichgesetzt - so kann man auf einen Blick erkennen, wo in der Message die Attribute abgebildet werden:

. ".\MSTLibrary.ps1"
$url = ""
SendMessage2Channel -WebhookURL $url `
-Message "Message" `
-Title "Title" `
-MessageColor Green `
-ActivityTitle "ActivityTitle" `
-ActivitySubtitle "ActivitySubtitle"

Die Funktion SendMessage2Channel  postet eine Alert-Nachricht in einen Teams-Channel

Ergebnis der Funktion SendMessage2Channel

Fazit 

Wie du sehen kannst, bietet SendMessage2Channel aus dem ActionPack von ScriptRunner eine (in meinen Augen) bessere Möglichkeit als das manuelle Bauen einer JSON-Datei. Der Code bleibt dadurch um einiges Übersichtlicher und ist auch direkt für Laien verständlich, da nicht die eigentliche Funktionalität hinter SendMessage2Channel durchdrungen werden muss - die Funktion kann als reine BlackBox angesehen werden, welche man gezielt mit Daten füttert, um das gewünschte Ergebnis zu erreichen.

Weiterführende Links

Über den Autor: