none
Betreff nachträglich ändern RRS feed

  • 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?

     

    Donnerstag, 14. April 2016 16:32

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


    Sonntag, 24. April 2016 12:37

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.

    Freitag, 15. April 2016 13:48
    Moderator
  • 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)

    Freitag, 15. April 2016 13:51
  • 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


    Sonntag, 24. April 2016 12:37
  • SUPER VIELEN VIELEN DANK

    Dienstag, 26. April 2016 19:28