Schluss mit der Verschwendung: So automatisieren Sie die Optimierung von Microsoft 365-Lizenzen mit PowerShell
Von Mirko Peters · · Aktualisiert
Willkommen zurück im Blog! Wenn Sie einen Microsoft 365-Mandanten verwalten, kennen Sie wahrscheinlich das ungute Gefühl, wenn Sie am Monatsende die Rechnung öffnen. Sie sehen Dutzende, vielleicht Hunderte aktive Lizenzen, die Benutzern zugewiesen sind, die sich seit dem letzten Geschäftsjahr nicht mehr angemeldet haben. Manuelle Prüfungen im Portal fühlen sich produktiv an, übersehen aber regelmä
Automatisch mit KI aus dem Originalbeitrag übersetzt. Englisches Original lesen
Willkommen zurück im Blog! Wenn Sie einen Microsoft 365-Mandanten verwalten, kennen Sie wahrscheinlich das ungute Gefühl, wenn Sie am Monatsende die Rechnung öffnen. Sie sehen Dutzende, vielleicht Hunderte aktive Lizenzen, die Benutzern zugewiesen sind, die sich seit dem letzten Geschäftsjahr nicht mehr angemeldet haben. Manuelle Prüfungen im Portal fühlen sich produktiv an, übersehen aber regelmäßig verwaiste Konten, riskante Freigaben und hohe Lizenzverluste. Wenn Sie es leid sind, das Admin Center stichprobenartig zu prüfen und bei Ihren quartalsweisen Audits unangenehme Überraschungen zu erleben, wird es Zeit, Automatisierung in Ihren Arbeitsablauf zu integrieren.
In diesem Beitrag zeigen wir Ihnen ausführlich, wie Sie ein zeitgesteuertes PowerShell-Skript schreiben, das Anmeldeprotokolle mit aktiven Lizenzen abgleicht. Am Ende dieser Anleitung wissen Sie, wie Sie ungenutzte SKUs kennzeichnen, unnötige Kosten jeden Monat zurückgewinnen und Ihren Mandanten vor wucherndem administrativem Aufwand schützen.
Einführung in die Optimierung von Microsoft 365-Lizenzen
Die Lizenzoptimierung wird oft als jährliches Ärgernis betrachtet. IT-Verantwortliche müssen hektisch manuelle Exporte erstellen, Abteilungsleiter anfragen, ob Externe noch im Einsatz sind, und raten, ob ein Konto tatsächlich verwaist ist. Dieser reaktive Ansatz führt zwangsläufig zu verschwendetem Budget. Jeden Tag, an dem ein ausgeschiedener Externer oder ein ehemaliger Mitarbeiter eine E5- oder Business Premium-Lizenz behält, verliert Ihre Organisation Geld.
Um dies zu ändern, sollten Sie die Lizenzoptimierung als kontinuierlichen, automatisierten Prozess verstehen. Mit PowerShell und Microsoft Graph können Sie Skripte entwickeln, die die Hauptarbeit für Sie übernehmen und Ihnen verwertbare Daten liefern, bevor Ihr Morgenkaffee fertig ist.
Warum manuelle Portalprüfungen nicht ausreichen
Warum sollten Sie sich nicht einfach auf das integrierte Microsoft 365 Admin Center verlassen? Das Portal ist auf Komfort ausgelegt, nicht auf umfassende Governance. Wenn Sie sich in der Weboberfläche anmelden, sehen Sie Momentaufnahmen ohne historischen Kontext. Das Portal ermöglicht es nicht ohne Weiteres, letzte Anmeldedaten mit bestimmten Lizenz-SKUs über Tausende Benutzer hinweg in einer übersichtlichen Ansicht abzugleichen.
Außerdem hängen manuelle Prüfungen vollständig vom menschlichen Gedächtnis ab. Haben Sie an die Dienstkonten gedacht? Haben Sie überprüft, ob das freigegebene Postfach tatsächlich eine Exchange Online Plan 2-Lizenz benötigt? Menschliche Fehler führen zu blinden Flecken, und diese kosten Geld und schaffen Sicherheitsrisiken.
Auswahl der richtigen PowerShell-Module und Berechtigungsbereiche
Bevor Sie auch nur eine Zeile Skriptlogik schreiben, sollten Sie Ihre Werkzeuge zusammenstellen. Das PowerShell-Ökosystem von Microsoft hat sich weiterentwickelt, und der Einsatz veralteter Module führt nur zu Warnungen zur Einstellung und fehlerhaften Skripten. Ihr Kernwerkzeugkasten sollte Folgendes umfassen:
- Microsoft Graph PowerShell: Der moderne Standard für die Verwaltung von Benutzern, Gruppen und Verzeichnisobjekten.
- ExchangeOnlineManagement: Unverzichtbar für die Prüfung von Postfächern, Weiterleitungsregeln und der Lizenzierung freigegebener Postfächer.
- PnP.PowerShell: Entscheidend für die Prüfung von SharePoint-Websites, Gastlinks und die Ausbreitung externer Freigaben.
Achten Sie darauf, beim Erteilen von Berechtigungen für Ihre Skripte das Prinzip der geringsten Rechte anzuwenden. Verwenden Sie niemals Anmeldedaten eines globalen Administrators für automatisierte Skripte.
Definition wöchentlicher schreibgeschützter Audit-Berichte
Die goldene Regel der IT-Automatisierung lautet einfach: zuerst nur lesen. Beginnen Sie Ihre Automatisierung niemals mit Skripten, die Benutzer automatisch löschen oder Lizenzen entziehen. Ihre erste Version sollte sich ausschließlich auf das Sammeln von Daten konzentrieren.
Richten Sie einen wöchentlichen Zeitplan ein, der ein umfassendes, schreibgeschütztes Audit ausführt. Dieses Audit sollte inaktive Benutzer, Listen mit Gastzugriffen, Lizenzzuweisungen im Vergleich zur tatsächlichen Anmeldeaktivität, Postfachkonfigurationen und verwaiste Microsoft 365-Gruppen auswerten. Mit einem wöchentlichen Rhythmus ersetzen Sie hektische Feuerwehreinsätze durch eine zehnminütige Überprüfung übersichtlicher, automatisch erstellter Berichte.
Abgleich von Anmeldeprotokollen mit aktiven Lizenzen
Das Geheimnis der Lizenzoptimierung ist der Abgleich. Eine Lizenz, die einem Benutzerkonto zugewiesen ist, ist bedeutungslos, wenn sich dieser Benutzer seit 90 Tagen nicht angemeldet hat. Ihr Skript muss zwei zentrale Datensätze aus Microsoft Entra ID abrufen:
- Die zugewiesenen Lizenz-SKUs des Benutzers.
- Das letzte Anmeldedatum des Benutzers (interaktiv und nicht interaktiv).
Durch die Verknüpfung dieser beiden Datenpunkte mit PowerShell-Objekten können Sie Lizenzverschwendung sofort berechnen. Überschreitet die letzte Anmeldung eines Benutzers einen definierten Schwellenwert (etwa 60 oder 90 Tage), markiert das Skript dieses Konto als Kandidaten für die Lizenzrückgewinnung.
Automatisierte Berichtsbereitstellung und Artefaktspeicherung
Ein Bericht, der unbeachtet in einem lokalen Verzeichnis liegt, bringt nichts. Sie müssen Ihre Erkenntnisse direkt an die Personen liefern, die handeln können. Konfigurieren Sie Ihr Skript so, dass es strukturierte CSV-Dateien und übersichtliche HTML-Zusammenfassungen erzeugt.
Anschließend lassen Sie das Skript die Zusammenfassung per E-Mail an Ihre IT-Governance-Verteilerliste senden oder über einen Webhook direkt in einen dedizierten Microsoft-Teams-Kanal posten. Zusätzlich speichern Sie die rohen CSV-Artefakte in einer sicheren Governance-SharePoint-Dokumentbibliothek, damit Sie für Compliance-Zwecke eine historische Nachweiskette haben.
Sicher planen mit Azure Automation und der Aufgabenplanung
Wo sollten diese Skripte laufen? Sie können sie von einem lokalen Rechner oder einem Windows Server über die Aufgabenplanung ausführen, wobei die Anmeldeinformationen in einem sicheren Speicher hinterlegt sind. Der Ansatz für Unternehmensniveau ist jedoch Azure Automation.
Wenn Sie Ihre Skripte als Azure-Automation-Runbooks bereitstellen und sich über eine verwaltete Identität authentifizieren, entfällt das Risiko fest codierter Kennwörter oder abgelaufener Geheimnisse von Dienstprinzipalen. Azure Automation übernimmt in der Cloud nahtlos die Ausführungsumgebung, die Protokollierung und die Fehlerbehandlung.
Sicherheits- und Compliance-Leitplanken implementieren
Automatisierung ohne Leitplanken ist eine Katastrophe, die nur darauf wartet, einzutreten. Um Ihren Mandanten zu schützen, bauen Sie die folgenden Schutzmechanismen in Ihre Automatisierungspipeline ein:
- Ausführliche Protokollierung: Erfassen Sie jeden Schritt der Skriptausführung mit Korrelations-IDs.
- Try/Catch-Blöcke: Behandeln Sie Drosselung, Netzwerk-Timeouts und Berechtigungsfehler sauber und senden Sie bei fehlgeschlagenen Läufen Warnungen an ein freigegebenes Postfach.
- Warteschlangen für ausstehende Aktionen: Statt Lizenzen automatisch zu entziehen, leiten Sie Aktionen mit hoher Auswirkung zunächst über eine Warteschlange für „ausstehend“ oder einen Genehmigungsworkflow.
Ihre Bereinigungsstrategie phasenweise umsetzen
Versuchen Sie nicht, am ersten Tag alles zu automatisieren. Rollen Sie Ihre Bereinigungsstrategie in klar definierten Phasen aus:
- Woche 1–2: Nur Berichte. Daten sammeln, Fehlalarme prüfen und Ihre Ausnahmelisten anpassen.
- Woche 3–4: Sanfte Maßnahmen. Veraltete Gastlinks beginnen Sie ablaufen zu lassen, und Empfehlungen zur Lizenzentfernung, die eine manuelle Genehmigung erfordern, werden angezeigt.
- Laufend: Automatisieren Sie risikoarme Elemente und behalten Sie für destruktive Änderungen menschliche Genehmigungsschritte bei.
Häufige Fallstricke bei der PowerShell-Automatisierung beheben
Auch die besten Skripte stoßen auf Hindernisse. Wenn Abfragen leere Ergebnisse liefern, prüfen Sie Ihre Graph-Berechtigungen und Modulversionen genau. Testen Sie die Abfrage im Graph Explorer, um das Problem einzugrenzen. Treten zufällige Fehler auf, stößt Ihr Skript wahrscheinlich an Drosselungsgrenzen. Implementieren Sie exponentielles Backoff und Wiederholungslogik, damit Ihre Läufe stabil bleiben. Achten Sie schließlich auf Fehlalarme, indem Sie eine robuste Ausnahmeliste für Dienstkonten und Notfallzugriffskonten pflegen.
Häufige Fragen
Wird die Automatisierung meinen Mandanten beschädigen?
Nicht, wenn Sie nur lesend beginnen, Genehmigungen einbauen und die Berechtigungen Ihrer Automatisierungskonten strikt begrenzen.
Brauche ich jetzt Graph PowerShell?
Ja, es ist der moderne Weg nach vorn. Nutzen Sie es zusammen mit den Modulen für Exchange Online und PnP, um alle Verwaltungsbereiche abzudecken.
Wie schnell sehe ich einen ROI?
Der erste wöchentliche Lauf deckt in der Regel erstaunlich viele ungenutzte Lizenzen und veraltete Gastkonten auf und bietet damit sofort Einsparpotenziale.
Was ist mit Multi-Geo oder MSPs?
Parametrisieren Sie Ihre Mandantenkonfigurationen, zentralisieren Sie Ihre Protokollierungsinfrastruktur und kennzeichnen Sie Ihre Ausgabeberichte mit der Mandanten-ID, um über mehrere Umgebungen hinweg zu skalieren.
Fazit
Die Automatisierung Ihrer Microsoft-365-Lizenzoptimierung gehört zu den wirkungsvollsten Projekten, die ein Administrator anstoßen kann. Sie beendet die monatliche Verschwendung von Softwareausgaben, verbessert Ihre Sicherheitslage durch die Bereinigung veralteter Konten und befreit Sie von mühsamen manuellen Portalprüfungen.
Wenn Sie eine vollständige Schritt-für-Schritt-Erklärung dieser Konzepte hören möchten, inklusive Live-Skriptanalysen und tieferen Architekturtipps, hören Sie sich unbedingt die passende Podcast-Folge an: Automate Microsoft 365 Tenant Cleanup with PowerShell. Schalten Sie ein und bringen Sie Ihre Automatisierung noch heute auf die nächste Stufe!