Benutzer mit den meisten Antworten
Betreff nachträglich ändern

Frage
-
Hallo,
ich habe von einer Drittsoftware, zu verschiedenen Exchange Postfächern Status-EMail´s bekommen. mehrere tausend.
in dieser Status-EMail befindet sich im Betreff ein paar Zeichen zu viel.
Nun würde ich gerne diese Zeichen entfernern (Global)
z.b.
jetzt
Betreff: Meldung von Serverxxx
neu
Betreff: Serverxxx
Kann man über die Powershell sagen, "finde in allen Mailboxen die E-Mails die im Betreff "Meldung von" haben und lösche denn das "Meldung von" raus, oder lösche die ersten 11 Zeichen der Betreffs raus?
Antworten
-
Moin Sascha,
Transport Regel (aus dem Exchange-Standard-Arsenal) kann IMHO den Betreff nur verlängern, indem ein Präfix vorangestellt wird. Somit wird auch für zukünftige Mails eine Lösung gefunden werden müssen. Am Besten ist es, wenn man die Drittsoftware dazu bekommt, das zu tun, was man braucht.
Für den jetzigen Mail-Bestand ist EWS, wie Robert sagt, die Waffe der Wahl. Man wird dafür einen Account mit ApplicationImpersonation-Berechtigung auf alle betroffenen Postfächer brauchen (sehr beliebt bei Betriebsräten ;-) ). Danach ist das Ganze relativ trivial:
$users = @('user1@firma.de','user2@firma.de') # <- (Get-Mailbox -ResultSize Unlimited).PrimarySMTPAddress $string_to_find = 'Meldung von ' # <- wird als Präfix behandelt! $string_to_replace = '' # <- es werden alle Vorkommen von $string_to_find ersetzt! $page_size = 1000 Add-Type -Path “C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll” $ExchangeVersion = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013 $Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService($ExchangeVersion) $ConflictResolutionMode = [Microsoft.Exchange.WebServices.Data.ConflictResolutionMode]::AlwaysOverwrite foreach ($MailAddress in $users) { Write-Host "Mailbox: $MailAddress" $Service.AutodiscoverUrl($MailAddress,{$true}) Write-Host "Verwende URL: $($Service.Url.OriginalString)" $Service.ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress, $MailAddress) $ivItemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView($page_size) $folderid= new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$MailAddress) $Inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($Service,$folderid) $more_available = $true while ($more_available) { $fiItems = $service.FindItems($Inbox.Id,"System.Subject:$string_to_find*",$ivItemView) foreach($Item in $fiItems.Items){ "Subject : " + $Item.Subject $Item.Subject = $Item.Subject -replace $string_to_find, $string_to_replace $Item.Update($ConflictResolutionMode) } $more_available = $fiItems.MoreAvailable if ($more_available) { $ivItemView.Offset += $page_size } } }
Damit das funktioniert, musst Du a. EWS Managed API installieren (https://www.microsoft.com/en-us/download/details.aspx?id=35371) und b. den User, der das Skript ausführt, für Impersonation berechtigen:
New-ManagementRoleAssignment –Name "adminuser_may_impersonate" –Role ApplicationImpersonation –User: "DOMAIN\adminuser"
HTH
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
- Bearbeitet Evgenij Smirnov Montag, 25. April 2016 09:08 corrected page size
- Als Antwort vorgeschlagen Evgenij Smirnov Dienstag, 26. April 2016 06:52
- Als Antwort markiert Teodora MilushevaModerator Dienstag, 3. Mai 2016 09:48
Alle Antworten
-
Hallo Sascha,
das können Sie erreichen aber nur für die zukünftige E-Mail mit eine Transport Regel.
Entweder können Sie diese E-Mails über DiscroveyMailbox entfernen.
Gruß,
Teodora
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Moin,
einen offiziellen Weg, bestehende Mails zu ändern, gibt es nicht.
Eventuell programmatisch über die EWS als Schnittstelle, aber da müsstest Du eventuell mal in der MSDN schauen oder im MSDN-Forum fragen. Hier sind IMHO keine Entwickler unterwegs.
Gruesse aus Berlin schickt Robert - MVP Office Servers and Services (Exchange Server)
-
Moin Sascha,
Transport Regel (aus dem Exchange-Standard-Arsenal) kann IMHO den Betreff nur verlängern, indem ein Präfix vorangestellt wird. Somit wird auch für zukünftige Mails eine Lösung gefunden werden müssen. Am Besten ist es, wenn man die Drittsoftware dazu bekommt, das zu tun, was man braucht.
Für den jetzigen Mail-Bestand ist EWS, wie Robert sagt, die Waffe der Wahl. Man wird dafür einen Account mit ApplicationImpersonation-Berechtigung auf alle betroffenen Postfächer brauchen (sehr beliebt bei Betriebsräten ;-) ). Danach ist das Ganze relativ trivial:
$users = @('user1@firma.de','user2@firma.de') # <- (Get-Mailbox -ResultSize Unlimited).PrimarySMTPAddress $string_to_find = 'Meldung von ' # <- wird als Präfix behandelt! $string_to_replace = '' # <- es werden alle Vorkommen von $string_to_find ersetzt! $page_size = 1000 Add-Type -Path “C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll” $ExchangeVersion = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013 $Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService($ExchangeVersion) $ConflictResolutionMode = [Microsoft.Exchange.WebServices.Data.ConflictResolutionMode]::AlwaysOverwrite foreach ($MailAddress in $users) { Write-Host "Mailbox: $MailAddress" $Service.AutodiscoverUrl($MailAddress,{$true}) Write-Host "Verwende URL: $($Service.Url.OriginalString)" $Service.ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress, $MailAddress) $ivItemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView($page_size) $folderid= new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$MailAddress) $Inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($Service,$folderid) $more_available = $true while ($more_available) { $fiItems = $service.FindItems($Inbox.Id,"System.Subject:$string_to_find*",$ivItemView) foreach($Item in $fiItems.Items){ "Subject : " + $Item.Subject $Item.Subject = $Item.Subject -replace $string_to_find, $string_to_replace $Item.Update($ConflictResolutionMode) } $more_available = $fiItems.MoreAvailable if ($more_available) { $ivItemView.Offset += $page_size } } }
Damit das funktioniert, musst Du a. EWS Managed API installieren (https://www.microsoft.com/en-us/download/details.aspx?id=35371) und b. den User, der das Skript ausführt, für Impersonation berechtigen:
New-ManagementRoleAssignment –Name "adminuser_may_impersonate" –Role ApplicationImpersonation –User: "DOMAIN\adminuser"
HTH
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
- Bearbeitet Evgenij Smirnov Montag, 25. April 2016 09:08 corrected page size
- Als Antwort vorgeschlagen Evgenij Smirnov Dienstag, 26. April 2016 06:52
- Als Antwort markiert Teodora MilushevaModerator Dienstag, 3. Mai 2016 09:48