M365 Mails mit bestimmten Betreff und älter als 72h in allen Postfächern löschen
Hallo,
ein Kunde führt gerade ein Ticket-System ein. Dadurch bekommen die Mitarbeiter bis zu 30 Mails pro Tag wegen neuer oder geänderter Tickets.
Darin steht nur eine Info und ein Link. Die können am nächsten Tag einfach gelöscht werden.
Das macht aber keiner.
Gibt es eine Möglichkeit alle M365 Mails mit bestimmten Betreff und älter als 72h in allen Postfächern zu löschen?
Per PS oder so?
Jeder könnte in seinem Outlook eine Regel dafür erstellen, aber das werden die meisten nicht hinbekommen oder schlicht nicht machen.
Stefan
ein Kunde führt gerade ein Ticket-System ein. Dadurch bekommen die Mitarbeiter bis zu 30 Mails pro Tag wegen neuer oder geänderter Tickets.
Darin steht nur eine Info und ein Link. Die können am nächsten Tag einfach gelöscht werden.
Das macht aber keiner.
Gibt es eine Möglichkeit alle M365 Mails mit bestimmten Betreff und älter als 72h in allen Postfächern zu löschen?
Per PS oder so?
Jeder könnte in seinem Outlook eine Regel dafür erstellen, aber das werden die meisten nicht hinbekommen oder schlicht nicht machen.
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 669338
Url: https://administrator.de/contentid/669338
Ausgedruckt am: 07.11.2024 um 17:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Stefan,
Gruss Penny.
Jeder könnte in seinem Outlook eine Regel dafür erstellen, aber das werden die meisten nicht hinbekommen oder schlicht nicht machen
würde ich folgendermaßen versuchen zu erledigen:- es wird einmal einen Satz an Regeln für diese Thematik erstellt.
- Diese Regeln werden exportiert (gesichert)
- Weitere Personen importieren diesen Relgelsatz.
- Fertisch
Gruss Penny.
In Azure eine AppRegistration erstellen mit den MG Graph Berechtigungen für eine Application und den Scopes Mail.ReadWrite.All, User.Read.All, MailboxFolder.ReadWrite für alle Mailboxen. Dann noch Credentials für die App-Registration erstellen und Client-ID und Passwort notieren, oder Zertifikat generieren und das als Credential für den Login der Application nutzen.
Dann mit Powershell und der MG-Graph API alle Mailboxen holen mittels Get-MgUser. Dann per Schleife über die User und Get-MgUserMailFolderMessage die gewünschten Nachrichten per Filter-Parameter ausfiltern und mittels Remove-MgUserMessage diese Mails löschen. Done.
Gruß catrell
Dann mit Powershell und der MG-Graph API alle Mailboxen holen mittels Get-MgUser. Dann per Schleife über die User und Get-MgUserMailFolderMessage die gewünschten Nachrichten per Filter-Parameter ausfiltern und mittels Remove-MgUserMessage diese Mails löschen. Done.
Gruß catrell
Warum mit den Folgen beschäftigen wenn man die Ursache abstellen könnte
Wiso bekommen denn die Mitarbeiter 30 unwichtige Mails pro Tag und warum sind die am Folgetag noch unwichtiger?
Würde eher die Orga überdenken und das Ticketsystem vernünftig konfigurieren
PS: Der vorschlag von @catrell ist der richtige weg.
Wiso bekommen denn die Mitarbeiter 30 unwichtige Mails pro Tag und warum sind die am Folgetag noch unwichtiger?
Würde eher die Orga überdenken und das Ticketsystem vernünftig konfigurieren
PS: Der vorschlag von @catrell ist der richtige weg.
Servus Stefan.
Hier mal etwas M365 PS-Praxis für das Gewünschte mittels MG-Graph API.
Falls man nicht nur den Posteingang der Mailboxen durchsuchen möchte sondern auch sämtliche anderen Ordner der Mailbox. ersetze man die Zeile 34 durch diese Variante:
Viel Spaß damit.
Grüße Uwe
Hier mal etwas M365 PS-Praxis für das Gewünschte mittels MG-Graph API.
Neue Application Registration in Azure anlegen:
Client-ID notieren
Berechtigungen für die Graph API vergeben
Credentials generieren und geheimen Schlüssel notieren
Powershell-Skript
<#
Remove messages older than x days with subject that contains specific subject string from all users mailboxes inbox folder
#>
# Variables ----------------------------------------------------
# tenant domain
$tenant = 'xxxxxxxx.onmicrosoft.com'
# client id
$client_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# client secret
$client_password = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
# subject substring to match
$subject_string = 'my subject to match'
# only messages older than x days
$date = (get-date).AddDays(-3).Date
# --------------------------------------------------------------
$ErrorActionPreference = 'Stop'
# needed modules
$modules = 'Microsoft.Graph.Mail','Microsoft.Graph.Users'
# install modules if needed
$modules | %{
if(!(Get-Module -ListAvailable -Name $_)){
Install-Module $_ -Force -Scope CurrentUser
}
Import-Module $_
}
# connect to MG Graph
Connect-MgGraph -Tenant $tenant -ClientSecretCredential (new-Object PSCredential($client_id,(ConvertTo-SecureString $client_password -AsPlainText -Force))) -NoWelcome
# process each users mailbox
foreach($user in Get-MGUser -All -Property Id,Mail){
# get messages with specific subject and older than x days from the inbox
foreach ($message in Get-MgUserMailFolderMessage -MailFolderId inbox -UserId $user.id -All -Property id,subject,ReceivedDateTime -Filter "contains(subject,'$subject_string') and ReceivedDateTime lt $($date.toString('s'))Z"){
try{
write-host "Removing message with subject '$($message.subject)' received on '$($message.ReceivedDateTime)' from mailbox '$($user.Mail)' ..." -F Green
Remove-MgUserMessage -MessageId $message.id -UserId $user.id
}catch{
write-host "Exception: $($_.Exception.Message)" -F Red
}
}
}
# disconnect MG Graph session
Disconnect-MgGraph | out-null
Falls man nicht nur den Posteingang der Mailboxen durchsuchen möchte sondern auch sämtliche anderen Ordner der Mailbox. ersetze man die Zeile 34 durch diese Variante:
foreach ($message in Get-MgUserMessage -UserId $user.id -All -Property id,subject,ReceivedDateTime -Filter "contains(subject,'$subject_string') and ReceivedDateTime lt $($date.toString('s'))Z"){
Viel Spaß damit.
Grüße Uwe