137677
Goto Top

O365 Migration Ordner unter Posteingang

Hallo zusammen,

ich versuche derzeit Postfächer (mehr als 30) von einem alten Email-Anbieter über IMAP zu O365 zu migrieren. Dies funktioniert auch soweit, außer einer Sache:

Hat ein Nutzer eigene "Ordner", werden diese von Microsoft unterhalb von "Posteingang" angelegt und nicht auf der gleichen Ebene wie "Posteingang". Bei meinem alten Anbieter habe ich keine Einstellungen gefunden, um dort etwas zu verändern, auch nicht bei Mircrosoft. Hat hier vielleicht einer eine Idee?

Alternativ würde ich die betreffenden Ordner über Powershell versuchen zu verschieben. Leider kenne ich mich hier noch nicht gut aus und kennen den Befehl zum Verschieben von Ordnern nicht. Es wäre super, wenn ihr mir helfen könntet!

Danke schonmal!

Content-Key: 395587

Url: https://administrator.de/contentid/395587

Printed on: April 27, 2024 at 03:04 o'clock

Member: falscher-sperrstatus
falscher-sperrstatus Dec 13, 2018 at 08:24:00 (UTC)
Goto Top
Hallo Till,

warum erarbeitest du dir nicht erstmal das Basis Know How für das Projekt, bevor du es beginnst?

VG
Mitglied: 137677
137677 Dec 13, 2018 at 09:35:47 (UTC)
Goto Top
Hi,

vielen Dank für deine Antwort, allerdings hilft sie mir nicht weiter. Ich habe zu meinem oben beschriebenen Problem keine Lösung gefunden, deshalb schreibe ich ja hier. Eventuell kannst du mir vielleicht doch bei einer Lösungsfindung helfen?
Mitglied: 137846
137846 Dec 13, 2018 updated at 09:53:46 (UTC)
Goto Top
Member: bloodstix
bloodstix Dec 13, 2018 at 09:59:56 (UTC)
Goto Top
Hallo,

wenn die _neben_ dem Posteingang liegen würden, wären es Postfächer und keine persönlichen Ordner. Das funktioniert so in Exchange nicht. Das funktioniert in IMAP weil INBOX (=Posteingang) ungleich Postfach ist und untergeordnet zum Postfach liegt. Deshalb kann es da Ordner "daneben" geben.
Mitglied: 137846
137846 Dec 13, 2018 updated at 10:10:59 (UTC)
Goto Top
Zitat von @bloodstix:
wenn die _neben_ dem Posteingang liegen würden, wären es Postfächer und keine persönlichen Ordner. Das funktioniert so in Exchange nicht. Das funktioniert in IMAP weil INBOX (=Posteingang) ungleich Postfach ist und untergeordnet zum Postfach liegt. Deshalb kann es da Ordner "daneben" geben.
Nein, das geht auch in einer EX Mailbox problemlos! Mit EWS auch schon gemacht, wenn man WellKnownFoldername.Root als Parent verwendet lassen sich auch dort selbstverständlich Ordner erstellen. Sonst wären ja Kalender &Co. nach deiner Aussage Postfächer, und das ist Quatsch, die liegen alle im Root der Mailbox und sind quasi auch nur Ordner nur eben anderen Typs.
Member: Ex0r2k16
Ex0r2k16 Dec 13, 2018 at 10:21:29 (UTC)
Goto Top
Ich schließe mich den Meinungen der Vorredner an.

Du kannst dir allerdings mal das Toolset von CodeTwo anschauen. Die haben alles mögliche an ganz netten Tools für eine O365 Migration zur Verfügung. Teilweise sogar kostenlos.

Wenn man nicht so fitt in der Powershell ist, könnte das eine Alternative sein. Aber auch da musst du genau abwägen was für euch brauchbar ist und was nicht.
Mitglied: 137677
137677 Dec 17, 2018 at 10:40:04 (UTC)
Goto Top
Vielen Dank für eure Antworten!

Ich werde nun probieren, die betreffenden Ordner("Ordner 1" und "Ordner 2") per Powershell an die richtige Stelle zu kopieren. Leider habe ich noch Probleme mit dem Move Befehl. So, wie ich ihn unten aufgeschrieben habe, ist er natürlich falsch. Könnt ihr mir helefen, wie ich diese Ordner nun hochkopiert bekomme? Vielen Dank!

Mein Code bisher:

#Exchange verbinden
#$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $cred -Authentication Basic -AllowRedirection
#Import-PSSession $Session -DisableNameChecking

$MailboxName = "name@domain.de"  
$passwort = "XXXXXXXXXX"  

$dllpath = "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"  
[void][Reflection.Assembly]::LoadFile($dllpath)
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
$service.Credentials = New-Object System.Net.NetworkCredential($MailboxName , $passwort, "domain.de");  
$service.AutodiscoverUrl($MailboxName, {$true} )

Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$MailboxName)

$Posteingang = Get-MailboxFolderStatistics $MailboxName | Where {$_.FolderPath -match "Posteingang"}  

foreach ($unterordner in $Posteingang)
{
    $folderid = $unterordner.folderpath.replace("/","\")  
    $folderid = "$MailboxName" + ":" + "$folderid"  

    if (($unterordner.Name -eq "Ordner 1")-or($unterordner.Name -eq "Ordner 2")){      
        $unterordner.Name 

       $unterordner.Move(MsgFolderRoot) #???

    }
}
Mitglied: 137846
137846 Dec 17, 2018 updated at 10:56:49 (UTC)
Goto Top
Du musst die Unterordner per EWS suchen lassen und auf diese den Move-Befehl anwenden! Logischerweise haben die Objekte von Get-MailboxFolderStatistics keine Methode Move, das haben nur die EWS Folder-Objekte, das ist dein Fehler!
Mitglied: 137677
137677 Dec 17, 2018 at 11:13:48 (UTC)
Goto Top
Dank dir, das war ein super Hinweis. Habe meinen Code nun um folgendes erweitert:

 $objExchange = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
 $fv=[Microsoft.Exchange.WebServices.Data.FolderView]100
  $fv.Traversal='Deep'  
  $objExchange.Load()

  $folders = $objExchange.FindFolders($fv)|select DisplayName,ID
  $folders = $objExchange.FindFolders($fv)

  foreach ($folder in $folders){

        $folder.name
        $folder.Move("MsgFolderRoot")  
   }

Nun bekomme ich folgende Fehlermeldung:
Exception calling "Move" with "1" argument(s): "The move or copy operation failed."

Anschließend werden trotzdem alle Ordner, inklusive Unterordner in root kopiert, also bspw.:

Vorher:
Ordner 1
Ordner 1\Unterordner 1
Ordner 2
Ordner 2\Unterordner 2

Nachher:
Ordner 1
Unterordner 1
Ordner 2
Unterordner 2

Kannst du mir nochmal helfen?
Mitglied: 137846
137846 Dec 17, 2018 updated at 11:29:08 (UTC)
Goto Top
Lese die Doku genau, dann erkennst du auch deinen Fehler und zwar hier:
$fv.Traversal='Deep'
Du bekommst damit ein Ergebnis alle Unterordner Rekursiv deswegen verliert er die Struktur!
Also Shallow ist dein Freund, denn Unterordner werden sowieso immer mit verschoben.
Exception calling "Move" with "1" argument(s): "The move or copy operation failed."
Wenn du natürlich Ordner hast die gleich lauten, klar das das nicht geht wenn du mit Deep ohne Struktur veschiebst, denk doch einfach erst mal nach, dann erübrigen sich die Fragen hier.
Mitglied: 137677
137677 Dec 17, 2018 at 12:02:49 (UTC)
Goto Top
Super, vielen Dank! Jetzt klappt alles! Da ich genau weiß, wie die Ordner heißen werden, habe ich auch noch eine zusätzliche if-Abfrage reingenommen.

Danke!