Migration Ex2010 zu Ex2016 ---- Gefilterte Mailadressen gleichzeitig migrieren

  • Hallo an Alle,


    ich teste gerade eine Migration von Exchange 2010 nach 2016.
    Da ich auch dem Exchange 2010 zwei Maildomänen habe, würde ich gerne alle Postfächer mit der Primären Maildomain @xx.de in eine Datenbank auf den neuen Exchange 2016 migrieren.
    Ich hätte dieses mit diesem Skript im PowerShell gemacht, geht leider nicht! Hat von euch jemand eine Idee? Bekomme leider auch keine Fehlermeldung in der PowerShell.


    Get-Mailbox -Server <Exchange2010> |
    Where {$_.PrimarySmtpAddress -match "@xx.de"} |
    New-MoveRequest -TargetDatabase "Datenbankname" -BatchName MA -BadItemLimit 0 -WhatIf



    Die ersten zwei Zeilen funktionieren, der MoveRequest macht leider nix


    Schon mal vielen Dank für euren Imput.


    Viele Grüße
    Martin

    • Offizieller Beitrag

    Moin,


    und willkommen im Forum.


    Hmmmm.... Ein Vergleich mit "Match" und dann noch mit Sonderzeichen.


    In meinen Kursen habe ich dazu immer gesat:
    - Wer nicht weiß, was Match vergleicht, sollte es nicht einsetzen.
    - Wer weiß, was Match macht, wird es nur sehr selten und sehr kontrolliert einsetzen


    Mach aus dem -match "@xx.de" mal eine -like "*@xx.de*".


    Ach, und nur um sicher zu sein:
    - keinen MoveRequest sondern einen MigrationBach benutzen (das ist am Ende nur eine Container für mehrere Requests)
    - die Batch (oder Request) auf dem 2016 Server ausführen.

  • Hallo Robert,


    das match ist mir auch gleich ins Auge gefallen. Könnte ich an der Stelle auch ein "-eq" verwenden anstatt -like?

    Hauptsache die Post kommt an...


    MCITP Enterprise Messaging Administrator 2010
    MCSA Windows Server 2008
    Exchange 2016 Administering
    Exchange 2016 Designing and Deploying
    Advanced Exchange 2016 Administration
    Barracuda Message Archiver Certified Engineer
    Kemp Loadmaster Administrator

    • Offizieller Beitrag

    Ein -eq ist ein eindeutiger Vergleich, der würde nur gehen, wenn es sich um eine genauer Mail-Adresse handelt, die man finden will.


    -like ist eine Wildcard-Suche, nimmt "*" und "?" als Platzhalter an und findet mehrere Ergebnisse.


    -match ist ein regulärer Ausdruck, extrem mächtig, braucht aber sehr viel Fachwissen.

  • Hallo Robert,
    danke für Deine Antwort und Anregung. Ich habe das Skript auch gleich mal getestet und gleich auch das nächste Problem.
    Diesmal mit Fehler, der Befehl keiner Piplineeingaben akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen


    Mein Skript sieht jetzt so aus:


    Get-Mailbox -Server Exchange2010 |
    Where {$_.PrimarySmtpAddress -like "*@xx.de*"} |
    New-MigrationBatch -Name MA -TargetDatabase "Datenbankname" -BadItemLimit 0 -WhatIf

    Kann ich diesen Filter nicht über Pipline an die Migrations Batch übergeben?


    Viele Grüße
    Martin

  • Hallo Robert,


    danke für die Info, ich habe es mir fast gedacht, dass ich diesen Umweg mit einer CSV machen muss!


    Leider kommt da gleich das nächste Problem mit einer Frage hoch.
    Ich bekomme beim ausführen eine Fehlermeldung.


    Die CVS-Datei enthält eine odermehrere nicht erkennbare Spalten. Entfernen Sie diese Spalten, und übertragen Sie die Datei erneut. Unbekannte Spalten: "Name ; Alias ; ServerName ; ProhitSendQuota"

    Mein Get-Mailbox Befahl exportiere ich mit dem Befahl | Out_File -FilePath C:\XXX.csv
    Kann mir da jemand einen Tipp geben was ich anpassen muss?


    Schon mal Danke und Sonnige Grüße
    Martin

    • Offizieller Beitrag

    Moin,


    der Aufbau der CSV-Datei ist übrigens auch in der verlinkten Anleitun erklärt (bzw. ein Klick weiter):
    https://technet.microsoft.com/library/dn170437.aspx


    Allerdings kann der Output von "Export-CSV" nicht benutzt werden, weil dann die Inhalte in Anführungszeichen sind. Das mochte bei mit der MigrationBatch nicht.


    Bei mir sah das ungeführ so aus:


    Bash
    $alteuser = Get-Mailbox -resultsize unlimited | `
                Where-Object { _HIER_BEI_BEDARF_EINEN_GEEIGNETEN_FILTER_SETZEN } |`
                Select-Object @{label="EmailAddress"; expression = { $_.PrimarySmtpAddress } }
    
    
    $a = @("EmailAddress")
    $a += @($alteuser.EmailAddress)
    $a | Set-Content C:\scripts\migration\migration.csv