Es ist seit Exchange 2010 SP1 möglich, mit der PowerShell PST-Dateien direkt in Exchange-Mailboxen zu importieren. Dazu verwendet man man am bestem das CMDlet New-MailboxImportRequest. Die PST-Dateien müssen auf einem UNC-Pfad zur Verfügung stehen.
Vorher: Exchange Role („Rolle“) „Mailbox Import Export“ anpassen
New-ManagementRoleAssignment –Role "Mailbox Import Export" –User MEINUSER
Der aufrufende Nutzer muss Mitglied der RBAC-Rolle „Mailbox Import Export“ sein. NAch diesem PowerShell-Kommando ab- und wieder anmelden und eine neue Powershell-Sitzung starten. Erst dann steht das New-MailboxImportRequest CMDlet zur Verfügung.
Eine PST Mailbox Importieren
Nur eine einzige PST in eine einzige Mailbox:
New-MailboxImportRequest -Mailbox USERAALIAS -FilePath \\esp-ho-ex2010a\pst\USERAALIAS.pst -BadItemLimit 20
Das BadItemLimit ist eine Vorsichtmaßnahme aus der Praxis, damit der Import nicht an einer kaputten Spam-Mail aus dem Jahr 1994 scheitert. Für Härtefälle die PST-Datei mehrfach mit Scanpst behandeln oder mittels „-AcceptLargeDataLoss“ alle Defekte ausschliessen.
Eine PST Mailbox Importieren, in einen Postfach-Unterordner
New-MailboxImportRequest -FilePath \\SERVER\c$\PST\foobar.pst -Mailbox foobar -TargetRootFolder "NAME DES ORDNERS" -BadItemLimit 20
Ab und an macht das Sinn, vor allem wenn Benutzer ihr Postfach dringend mal aufräumen sollten …
Eine PST Mailbox Importieren, in ein persönliches Archiv
Einfach ein -IsArchive an den New-MailboxImportRequest anhängen. Das persönliche Exchange Archiv muss schon existieren und entsprechend lizenziert sein.
Mehrere PST-Dateien in Mailboxen Importieren
Sofern der Benutzer-Alias und der Name der PST-Datei übereinanderstimmen, ist es kein Problem alle Import-Auträge auf eoinmal zu erstellen (Exchange arbeitet diese Nacheinander ab):
Get-ChildItem \\SERVER\c$\PST\*.pst | %{ New-MailboxImportRequest -BadItemLimit 20 -Mailbox $_.BaseName -FilePath $_.FullName }
Status des Importvorganes kontrollieren
Get-MailboxImportRequest -Identity USERALIAS | Get-MailboxImportRequestStatistics -IncludeReport
Alle Importvorgänge (nach Status sortiert) kontrollieren
Get-MailboxImportRequest -Status Completed
Get-MailboxImportRequest -Status Queued
Get-MailboxImportRequest -Status InProgress
Get-MailboxImportRequest -Status Failed
Statusmeldung „StalledDueToCI“ und kein Fortschritt
Exchange 2013 hat eien Bug, der die Gruppe für den Suchdienst nicht korrekt anlegt. Mit dem Setup aus CU7 oder höher ist das behoben. Das kann man aber manuell nacholen:
- Erstelle die Gruppe „ContentSubmitters“ (genau so geschrieben) in CN=Users
- Den „Administratoren“ und dem „Netzwerkdienst“ Vollzugriff auf diese GRuppe geben
- Den „Microsoft Exchange Search“ und den „Microsoft Exchange Search Host Controller“ Dienst neu starten.
Alle Importvorgänge aus der Warteschlange löschen
Get-MailboxImportRequest | Remove-MailboxImportRequest
Vollständige Importvorgänge aus der Warteschlange löschen
Get-MailboxImportRequest | where {$_.status -eq "Completed"} | Remove-MailboxImportRequest
Hi,
nette Scripte, gibt es eine Möglichkeit mit einem Powershell-Script E-Mails AUS einem PST Files mit bestimmten Kriterien zu löschen?
Gruß,
Chris
Es gibt keine Möglichkeit mit der PowerShell direkt in PST-Dateien herumzumanipulieren. Die PS is nicht in der Lage, selber Strukturen oder Inhalte in einer PST als Objekt zu erkennen. Man kann dazu aber das gute alte Outlook mißbrauchen, denn das hat ja immer den MAPI Namespace dabei 🙂
Ein ganz brauchbares Beispiel gibt es von einem andere (lustig 🙂 Chris im poshcode.