Exchange 2010/2013 PST-Dateien per PowerShell importieren (und mögliche Fehler)

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

ActiveDirectory Rechte-Vererbung via Powershell einschalten

Problem

active-directy-vererbung-einschaltenIm ActiveDirectory wurde die Vererbung von übergeordneten Rechten für Benutzer oder Computerobjekte ausgeschaltet. Obwohl es bestimmte Szenarien gibt, in denen eine solche Anpassung Sinn ergibt, führt das auslassen der Domänen-Rechtehirachie doch gerne auch zu schwer zu suchenden Fehlern.

Zum Beispiel:

  • ExchangeSynchronisationsfehler 86000C0A bei betroffenen Benutzern, obwohl OWA korrekt funktioniert
  • Dateisystems-Auflistung im Explorer schlängt mit 0x86000Cxx Fehlern Fehl
  • Fehler im Ereignisprotokoll von MSExchange ActiveSync mit dem Inhalt „Active directory Antwort: 00000005: SecErr: DSID-031521D0, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0″.“

Das sind noch nicht alle Fehler, es gibt noch einige weitere. Oft auch im Zusammenhang mit BlackBerry Enterprise Servern oder -Services.

Lösung

Wenn nur ein Objekt betroffen ist: Im Benutzerobjekt auf dem Tab Sicherheit unten die „Vererbung aktivieren“ und die folgenden Meldung abnicken.

Für mehrere Objekte hilft ein kurzes PowerShell-Script. Am einfachsten ist die Anwendung, wenn man eine PowerShell ISE als Administrator ausführt (!) und das Script in den oberen Script-Teil einfügt:

Import-Module activedirectory
$OU = "OU=INDIESEROUWERDENUSERGESUCHT,DC=MEINDOMAENE,DC=TLD"
$Users=get-aduser -Filter * -SearchBase $OU
if ($Users -ne $null) {
foreach ($Entry in $Users) {
 [string]$dn = (Get-ADUser $Entry).DistinguishedName
 $user = [ADSI]”LDAP://$dn”
 $acl = $user.objectSecurity
 Write-Host "Pruefe Benutzer:" (Get-ADUser $Entry).SamAccountName
 if ($acl.AreAccessRulesProtected){
 Write-Host "Fixe Benutzer:" (Get-ADUser $Entry).SamAccountName
 $acl.SetAccessRuleProtection($false,$true)
 $inherited = $acl.AreAccessRulesProtected
 $user.commitchanges()
 }
 }
}
else {
Write-Host "Keine Benutzer in $OU gefunden"
}

Referenz: http://support.microsoft.com/kb/2579075 und http://www.techguy.at/active-directory-objekte-mittels-powershell-wiederherstellen/

Windows Phone als (WLAN) Maus nutzen

mouse-windows-phoneWindows Phone lässt sich mal eben als Maus für Windows-PCs verwenden. Ich habe die Idee grade in einem Posting von Gostev aufgeschappt und natürlich sofort ausprobiert. Klappt super 🙂

  1. Microsoft Mouse without Borders auf dem Desktop installieren
  2. Microsoft Mouse without Borders auf dem Phone installieren
  3. Auf dem Desktop „Windows Phone / Tablet“ connectin einschalten
  4. Vom Windows Phone aus verbinden, fertig.

Zusammen mit dem Intel NH1 (NUC) wird damit jedes Gerät mit einem HDMI-Eingang zu einem kompletten Windows 8.1+ PC. Endlich ein vernünftiger Einsatzzweck für die Fernseher in Hotels und so 🙂

Fehler 8194 bei Gruppenrichtlinienanwendung „0x8007000d die Daten sind ungültig.“

Problem

Eine (oder mehrere) Gruppenrichtlinien werden unter Windows 7 oder Windows Server 2008/2008R2  nicht korrekt angewendet. Stadtdessen erscheint im Ereignisprotokoll folgender Fehler:

Ereignis-ID: 8194 
Beschreibung: Die clientseitige Erweiterung der Gruppenrichlinien konnte die Benutzerrichtlinieneinstellungen für "Domain Name {GUID}" anweden, Fehlercode "0x8007000d die Daten sind ungültig."

Die Richtiline taucht aber in einem GPRESULT fehlerfrei auf und die Richtlinie ist auf allen DC in Sysvol vorhanden.

Lösung

Dieses Problem tritt auf, weil die clientseitigen Erweiterungen der Gruppenrichtlinien verzeweifelt versuchen, die Verlaufsdatei der GPO aus dem lokalen Cache zu laden. Wenn dieser nicht (mehr) valide ist, tritt dieser Fehler auf. In der Theorie wurde das zwar mit KB979731 gefixt, aber zwischen Theorie und Praxis liegt bekanntlich die Realität.

Soforthilfe: Löschen des gesammten Inhaltes des Ordners:

C:\Users\All Users\Microsoft\Group Policy\History

Nach einem gpupdate /force klappt sofort wieder alles.

WindowsUpdate Fehler 0x8000FFFF

Problem

Windows Updates, Patches, .NET Frameworks oder ähnliches sich nicht installieren. Das WindowsUpdate.log in %windir% zeigt immer wieder den Fehler „0x8000FFFF“ an:

Misc WARNING: LoadLibrary failed for srclient.dll with hr:8007007E
Setup Staging setup package "WUClient-SelfUpdate-ActiveX~31bf3856ad364e35~amd64~~7.1.6001.65"
Setup WARNING: CBS staging operation failed, error = 0x8000FFFF
Setup FATAL: Failed to stage setup package "WUClient-SelfUpdate-ActiveX~31bf3856ad364e35~amd64~~7.1.6001.65", error =0x8000FFFF
Setup WARNING: Failed to stage applicable setup packages, error = 0x8000FFFF
Setup FATAL: Downloading binaries for SelfUpdate failed, err = 0x8000FFFF
Agent * WARNING: Skipping scan, self-update check returned 0x8000FFFF
Agent * WARNING: Exit code = 0x8000FFFF

Lösung

Der Fehler ist meist sehr hartnäckig. 0x8000FFFF verweist auf einen internen Fehler; das kann ein Datei-kaputt oder ein Berechtigungsfehler sein. Der häufigste Fall, vor allem bei neu installierten Windows Server 2008 DCs, ist eine fehlende Berechtigung für den Netzwerkdienst auf der Systemplatte. Der Netzwerkdienst, in dessen Kontext der Cryptoprovider läuft, muss das Root der Systempartition lesen dürfen.

  1. cacls %SystemDrive%\ /e /g "Netzwerkdienst":R
  2. Den Windows Update Dienst vollständig zurücksetzen (FixIt)