Tags: Collaboration, Monitoring, Microsoft 365, PowerShell, Microsoft Teams
Es ist gängige Praxis, dass sich Admins Warnungen aus Monitoring-Tools oder kritische Systemnachrichten per Mail oder SMS zuschicken lassen. Als Alternative bietet sich indes an, solche Alerts in Microsoft Teams zu füttern, um ihre Bearbeitung effizienter zu machen. Diese Anleitung zeigt das Vorgehen mit Hilfe von PowerShell.
Monitoring und vor allem das daraus entstehende Alerting hat sich über die letzten Jahre gewandelt. IT-Admins erhalten bei Ereignissen mit hoher Priorität eine SMS auf das Geschäfts-Handy und Mails zu Fehlermeldungen, die durch Events ausgelöst wurden.
Dieses Verfahren hat jedoch gravierende Nachteile. So läuft das eigene Postfach erfahrungsgemäß bei großen Infrastrukturen schnell voll. Aus diesem Grund erstellt man Regeln, welche die Mails direkt in eigene Ordner einsortieren, in denen jedoch einzelne Warnungen oft untergehen.
Eine Absprache mit den Kollegen, wer sich um welche Vorfälle kümmert, ist unter diesen Bedingungen und vor allem in Zeiten von Home Office umständlich. Daher bietet es sich an, die Nachrichten in einem Collaboration-System wie Microsoft Teams zu sammeln und dort die Zuständigkeiten zu klären.
Als Mechanismus, um die Alerts in Teams zu befördern, dienen so genannte Webhooks. Dabei handelt es sich letztlich um ein REST-API, dem man die Daten in einem vordefinierten Format übergibt, in der Regel als XML oder JSON.
Die meisten Alerting-Systeme sind heute in der Lage, Meldungen an eine solche Schnittstelle zu senden. Diese Anleitung zeigt das Erstellen von WebHooks am Beispiel von PowerShell und Microsoft Teams.
Einrichten von Webhooks in Teams
Um in Teams Webhooks empfangen zu können, benötigen wir ein Team und einen Kanal, in welchen die Benachrichtigungen einlaufen sollen. Es empfiehlt sich, für verschiedene Alert-Quellen eigene Kanäle zu nutzen. So kann jedes Team-Mitglied die für ihn relevanten Kanäle einblenden, Benachrichtigungen aktivieren und weniger wichtige Kanäle ausblenden.
Nachdem wir einen eigenen Kanal, in unserem Beispiel mit dem Namen PowerShell Webhooks, erstellt haben, öffnen wir über das Icon in der Navigationsleiste links unten die Liste der Apps. Dort suchen wir nach "Webhooks" und wählen dann Incoming Webbhooks aus dem Suchergebnis aus.
Der folgende Dialog bietet uns über eine Schaltfläche an, einen Webhook zu einem Team oder Channel hinzuzufügen.
Im nächsten Schritt erwartet der Assistent die Auswahl des Teams oder Channels.
Bevor wir den Webhook erstellen, geben wir diesem noch einen Namen und laden wahlweise noch ein dazugehöriges Icon hoch.
Nachdem wir auf Erstellen geklickt haben, erhalten wir den Link, an welchen wir mittels PowerShell oder auch anderen Tools die Benachrichtigungen senden können.
Auf der Seite von Teams ist die Konfiguration nun beendet. Im Folgenden widmen wir uns dem PowerShell-Code.
Senden von Webhooks mittels PowerShell
Wenn PowerShell automatisierte Tasks ausführt oder Reports sammelt, bietet es sich an, die Alarme oder sonstige Informationen am Ende des Scripts an den Teams-Kanal zu senden.
Dabei werden Parameter über das JSON-Format übertragen, welche Teams dann ausliest, um den Text in bestimmter Formatierung, Farbe oder Art anzuzeigen. Weitergehende Informationen zum Aufbau der Nachrichten finden sich auf Microsoft Doc.
Ein simpler Webhook könnte wie folgt aussehen:
In Zeile 1 wird eine Variable deklariert und initialisiert, welche wir später in den Webhook inkludieren.
Zeilen 3 bis 11 enthalten den Inhalt und die Art der Message. Diese werden in Zeile 13 in das JSON-Format umgewandelt.
Zeile 15-20 definieren die Parameter für den HTTP-Request. Hier geben wir den URI an, welchen Teams uns beim Erstellen des Connectors erzeugt hat. Außerdem hängen wir die JSON-Daten als Body an.
Mit Invoke-RestMethod senden wir das Ganze schließlich ab. Die PowerShell-Konsole sollte nun eine 1 als Rückgabewert ausgeben, wenn der Vorgang erfolgreich war.
Schlussendlich erhalten wir die Message-Card in unserem Teams-Kanal. Dort können Team-Mitglieder direkt kommentieren, falls sie sich des Alerts annehmen wollen, oder beispielsweise Lösungsvorschläge hinterlassen.
Fazit
Mit dieser Methode kann man Scripts schnell und flexibel um eine Teams-Notification erweitern, und eventuell gänzlich auf massenhafte Mail-Benachrichtigungen verzichten. Dennoch sollte man auch hier eine redundante Lösung in Betracht ziehen, denn bei einem Ausfall von M365 oder Teams wird man ansonsten keinen Alert erhalten.
Täglich Know-how für IT-Pros mit unserem Newsletter
Philip Lorenz hat mehrjährige Erfahrung als Administrator im Datacenter-Umfeld. Hierbei liegen seine Schwerpunkte auf der Administration von Windows Server, der Betreuung von VMware-Produkten und Microsoft Azure.
// Kontakt: E-Mail, Xing, LinkedIn, Website //
Der Powershell-Expertenkurs von LearningIT knüpft direkt an den kostenlosen Grundkurs an. Er vermittelt in über 5 Stunden hochwertiges Wissen und Know-how. Dabei wird der Kurs immer um weitere Themen und Livescripting-Videos erweitert.
Mit dem Code "windowspro" sicherst du dir 10% Rabatt! - Zum Kurs
Ähnliche Beiträge
- Microsoft Teams über PowerShell verwalten: Teams anlegen, ändern löschen und Benutzer hinzufügen
- Microsoft Teams: Termineinladungen in mehreren Sprachen versenden
- Praxisbeispiel für Action Cards: Alert bei geringem Speicherplatz an Microsoft Teams senden und von dort WAC starten
- Lizenzen für Microsoft 365 mittels PowerShell zuweisen
- Veeam Backup for Office 365 v5: Support für Microsoft Teams
Weitere Links