So listen und entfernen Sie Kalenderereignisse aus einem Exchange-Postfach mithilfe von PowerShell

PowerShell ist äußerst praktisch, wenn es um die Analyse von Exchange-Kalendern geht – egal ob Sie geplante Ereignisse einsehen oder einen bestimmten Termin bei Bedarf löschen möchten. Die Kalenderverwaltung in Exchange oder Microsoft 365 kann sich manchmal etwas umständlich anfühlen, insbesondere wenn Sie die Benutzeroberfläche oder die Benutzeroberfläche nicht direkt bearbeiten möchten. PowerShell-Skripte können viel Zeit sparen, aber die Vorgehensweise ist auch etwas ungewöhnlich, da es je nach Bedarf verschiedene Ansätze gibt. Beispielsweise ist das Abrufen einer Liste aller Kalenderereignisse eines Benutzers eine Sache, das Entfernen eines bestimmten Meetings oder das Leeren ganzer Kalender hingegen etwas völlig anderes – manchmal mit denselben Tools, manchmal nicht. Beachten Sie, dass Befehle in einer Umgebung funktionieren und in einer anderen nicht, insbesondere im Hinblick auf Berechtigungen oder Module. Dieser Leitfaden soll Ihnen jedoch helfen, das Auflisten und Entfernen von Kalenderereignissen in den meisten Umgebungen zu verstehen, egal ob Sie Exchange Online oder einen lokalen Server verwenden. Das Ergebnis? Sie können alle anstehenden Termine einsehen oder Ihren Kalender aufräumen, ohne sich in jedes Konto einzeln einloggen zu müssen. Zugegeben, es ist etwas umständlich, aber immerhin schneller als stundenlanges Klicken. Sehen Sie sich die folgenden Befehle an und wählen Sie den passenden für Ihre Bedürfnisse.

So listen und entfernen Sie Kalenderereignisse in Exchange mithilfe von PowerShell

Benutzerkalenderereignisse in Microsoft 365 mit PowerShell auflisten

Dies ist besonders nützlich, wenn Sie schnell einen Blick auf die Termine im Kalender eines Benutzers werfen möchten – ideal für Audits oder um herauszufinden, welche Termine noch anstehen. Möglich macht dies die Microsoft Graph API, die Ihnen Zugriff auf Kalendereinträge gewährt, sofern Sie über die entsprechenden Berechtigungen verfügen. Normalerweise registrieren Sie eine App in Azure AD ( Azure-Portal > App-Registrierungen > Neue Registrierung ) und erteilen ihr anschließend Calendars. Readdie Calendars. ReadBasic. Allerforderlichen Berechtigungen, damit Ihr Skript auf die Kalenderdaten zugreifen kann. Falls das Modul nicht installiert ist, führen Sie folgenden Befehl aus:

Install-Module Microsoft. Graph -Scope AllUsers

Sobald das erledigt ist, verwenden Sie die ID Ihrer Azure-App, einen Zertifikatfingerabdruck und Ihre Mandanten-ID zur Authentifizierung. Hier ist ein einfaches Beispiel für die Verbindung:

$certThumbprint = "9CF05589A4B29BECEE6456F08A76EBC3DC2BC581" $AzureAppID = "111111-2222-3333-4444-12345678" $tenant = "woshub.onmicrosoft.com" Connect-MgGraph -AppId $AzureAppID -CertificateThumbprint $certThumbprint -TenantId $tenant 

Bei manchen Konfigurationen kann dies beim ersten Mal fehlschlagen. Versuchen Sie in diesem Fall, die Verbindung wiederherzustellen oder Ihre Berechtigungen zu überprüfen, da Windows die Dinge bekanntlich gerne unnötig verkompliziert. Nach erfolgreicher Verbindung können Sie Benutzerkalenderereignisse wie folgt abrufen:

$StartDate = (Get-Date -Day 1) $EndDate = (Get-Date -Day 1).AddMonths(1) Get-MgUserCalendarView -UserId "[email protected]" -CalendarId "Calendar" -StartDateTime $StartDate -EndDateTime $EndDate | Select-Object -Property @{Name='EventStart';Expression={ $_. Start. DateTime }}, @{Name='EventEnd';Expression={ $_. End. DateTime }}, Subject, BodyPreview 

Hier werden die Meetings mit Start- und Endzeit, Themen und kurzen Inhaltsangaben aufgelistet. Praktisch für die Überprüfung oder um einfach zu sehen, was geplant ist, ohne sich im Portal anmelden zu müssen.

Methode 1: Anstehende Ereignisse im Exchange-Kalender entfernen

Wenn Sie anstehende Termine löschen möchten – beispielsweise, wenn ein Mitarbeiter im Urlaub ist und Sie seinen Kalender bereinigen müssen – können Sie das Cmdlet „Remove-CalendarEvents“ verwenden. Damit weisen Sie PowerShell an: „Lösche alle geplanten Besprechungen dieses Benutzers innerhalb der nächsten 15 Tage“ oder geben einen Datumsbereich an. Hier ist ein Beispiel:

Remove-CalendarEvents -Identity [email protected] -CancelOrganizedMeetings -QueryWindowInDays 15 

Dies eignet sich gut für schnelle Aufräumarbeiten, wenn der Abschied einer Person unmittelbar bevorsteht oder Sie eine kurze Überprüfung durchführen müssen. Sie können auch bestimmte Datumsbereiche auswählen:

Remove-CalendarEvents -Identity [email protected] -CancelOrganizedMeetings -QueryStartDate 2023-04-10 -QueryWindowInDays 60 

Bei manchen Konfigurationen -PreviewOnly -Verboseist es hilfreich, die zu entfernenden Elemente zuerst anzuzeigen, um nicht versehentlich alles zu löschen. Beachten Sie jedoch, dass dieses Cmdlet nur anstehende Ereignisse erfasst und nicht nach Betreff oder Organisator filtert – es dient hauptsächlich der schnellen Bereinigung nach Entlassungen oder schnellen Systemumstellungen.

Wenn Sie vergangene Ereignisse löschen oder mit älteren Daten auf einem lokalen Exchange-Server (z. B.2016, 2013 usw.) arbeiten müssen, sollten Sie Search-Mailbox oder New-ComplianceSearch verwenden, insbesondere wenn Sie bestimmte Themen oder Inhalte in den Kalendereinträgen durchsuchen. Zum Beispiel:

Search-Mailbox -Identity [email protected] -SearchQuery "Subject:'Discuss: AD Schema Update' AND Kind:meetings AND Received:01/12/2023..15/01/2024" -TargetMailbox report_mbx -TargetFolder SearchMailboxResult -LogOnly -LogLevel Full 

Dadurch werden spezifische Besprechungen angezeigt, die dem Thema und dem Datumsbereich entsprechen. Zum Löschen ersetzen Sie -LogOnly.-DeleteContentDas gleiche Prinzip gilt für Exchange Online, dort wird jedoch hauptsächlich ComplianceSearch verwendet. Hier ein kurzes Beispiel:

New-ComplianceSearch -Name DeleteOldMeetings -ContentMatchQuery "kind:meetings AND subject:weekly_it_meeting" Start-ComplianceSearch -identity DeleteOldMeetings Get-ComplianceSearch -identity DeleteOldMeetings | fl 

Sobald Ihre Suche abgeschlossen ist (Status: Abgeschlossen ), können Sie Folgendes ausführen:

New-ComplianceSearchAction -SearchName DeleteOldMeetings -Purge 

Diese Vorgehensweise erfordert etwas mehr Recherche, ist aber sehr effektiv, wenn man bestimmte Ereignisse aufspüren oder alte Terminpläne massenhaft löschen muss.

Zusammenfassung

Die Verwaltung von Kalenderereignissen mit PowerShell mag anfangs etwas einschüchternd wirken – insbesondere angesichts der vielen verschiedenen Tools und Befehle. Hat man sich aber erst einmal damit vertraut gemacht, erweist es sich als äußerst hilfreich. Ob Sie Ereignisse nur ansehen oder komplett löschen möchten, es gibt für nahezu jeden Anwendungsfall eine passende Methode.Überprüfen Sie Ihre Befehle und den Gültigkeitsbereich jedoch unbedingt, bevor Sie mehrere Ereignisse gleichzeitig löschen – nichts ist ärgerlicher, als versehentlich alles zu löschen. Bei einer Konfiguration funktionierte es sofort, bei einer anderen war ein Neustart oder eine Aktualisierung erforderlich. Dennoch spart es in der Regel enorm viel Zeit im Vergleich zu manuellen Klicks, insbesondere in großen Organisationen. Viel Erfolg bei der Kalenderverwaltung!

Zusammenfassung

  • Verwenden Sie PowerShell-Module wie Microsoft. Graph zum Lesen von Kalenderdaten.
  • Registrieren Sie Apps in Azure und erteilen Sie die korrekten Berechtigungen, bevor Sie die Verbindung herstellen.
  • Verwenden Sie Remove-CalendarEvents, um anstehende Termine schnell zu entfernen.
  • Ältere oder spezifische Ereignisse können mit Search-Mailbox oder ComplianceSearch gesucht und gelöscht werden.
  • Testen Sie Befehle immer mit der Option -PreviewOnly, bevor Sie große Datenmengen löschen.

Abschließende Bemerkung: Ich drücke die Daumen, dass es hilft.