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/

Exchange 2010: „Diese Postfachdatenbank enthält mindestens ein Postfach, einen Postfachplan, ein Archivpostfach oder ein Vermittlungspostfach …“

Problem

Eine Exchange 2010 Datenbank lässt sich nach einer Migration auf einen anderen Server (2010 odr 2013) nicht löschen. Es erscheint bei jemden Versuch folgende Fehlermeldung:

Die Postfachdatenbank  kann nicht gelöscht werden.

<Mailbox Database Name>
Fehler: Diese Postfachdatenbank enthält mindestens ein Postfach, einen Postfachplan, ein
Archivpostfach oder ein Vermittlungspostfach. Führen Sie den Befehl ‘Get-Mailbox -Database
<Database ID>’ aus, um eine Liste aller Postfächer in der Datenbank abzurufen. Führen
Sie den Befehl ‘Get-MailboxPlan’ aus, um eine Liste aller Postfachpläne in dieser
Datenbank abzurufen. Führen Sie den Befehl ‘Get-Mailbox -Database <Database ID>
-Archive’ aus, um eine Liste mit Archivpostfächern in dieser Datenbank abzurufen. Führen
Sie den Befehl ‘Get-Mailbox -Database <Database ID> -Arbitration’ aus, um eine Liste
aller Vermittlungspostfächer in dieser Datenbank abzurufen. Wenn Sie ein Postfach, bei dem
es sich nicht um ein Vermittlungspostfach handelt, deaktivieren möchten, um die
Postfachdatenbank löschen zu können, führen Sie den Befehl ‘Disable-Mailbox <Mailbox
ID> aus. [....]

Lösung

Es gibt einige System-Postfächer, die in einer Liste aus „get-mailbox“ nicht auftauchen. Das sind – in den meisten Fällen – das Systempostfach und das Organisations-Postfach „FederatedEmail“. Diese Postfächer werden aber auch in der ManagementConsole nicht (mehr) angezeigt.

Die Namen der Postfachdatenbanken liefert die Exchange-PowerShell mit:

Get-MailboxDatabase

Daraus kann man dann jeweils die betroffenen Postfächer anzeigen um sie zu verschieben (nein, pipen ist mit Arbitration nicht möglich, man muss kopieren+einfügen):

Get-Mailbox -Database "AlteDatenbank" -Arbitration | Select-Object Name | fl

Dann kann man diese einzeln verschieben:

New-MoveRequest -Identity "FederatedEmail.4c4c4c4foobar" -TargetDatabase "NeueDatenbank"

Exchange Server 2013 umbenennen

Problem

Kann ich meinen Exchange Server 2013 umbenennen?

Lösung

Offiziell von Microsoft gibt es zwei unterstütze Wege dieses Ziel zu erreichen. Erstens den Exchange deinstallieren, Windows umbenennen und Exchange wieder installieren. Zweitens einen zusätzlichen Exchange in dieselbe Organisation installieren, alles dorthin migrieren, den Quellserver deinstallieren, umbennen, Exchange wieder installieren und zurückmirgrieren.

tldr; Nein.

Exchange 2007/2010/2013 Postfach zu bestehendem Nutzer hinzufügen funktioniert nicht

Problem

exchange2010-kein-userAuf einem Exchange 2007/2010/2013 lassen sich bestehende Benutzer nicht auswählen um Ihnen ein neues Postfach zuzuordnen. Die Benutzer werden in der Auswahlliste im EMC-Assistenten nicht mehr angezeigt.Das gilt für alle Benutzer, die schon mal ein POstfach zugeordnet hatte, seit Exchange 2003.

Das Powershell-cmdlet „enable-mailbox“ schlägt bei dem Versuch das Postfach manuell zu erstellen mit einem „Empfängertyp“-Fehler fehl.

[PS] C:\>Enable-Mailbox -Identity NAME
Dieser Task unterstützt keine Empfänger dieses Typs. Der angegebene Empfänger doma.in/OU/NAME ist vom Typ UserMailbox. Stellen Sie sicher, dass dieser Empfänger dem für diesen Task erforderlichen Empfängertyp
entspricht.
+ CategoryInfo          : InvalidArgument: (<CN>:RecipientIdParameter) [Enable-Mailbox], RecipientTaskException
+ FullyQualifiedErrorId : BB2B6FE5,Microsoft.Exchange.Management.RecipientTasks.EnableMailbox

Lösung

In dem Benutzerobjekt sind vermutlich noch alte und/oder veraltete HomeMTA-Attribute eingetragen. Die Exchange-cmdlets zur Benutzerauflistung lösend iese Objekte nicht auf, weil sie davon ausgehen der Benutzer hat bereits ein Maiulbox-Objekt auf einem anderen Server/in einem anderen Forest.

Die Benutzerobjekte lassen sich mit „Remove Exchange Attributes Tool – Version 1.0 – [11KB]“ (von telnetport25.comugg.li Download Mirror) entfernen:

RemoveExchangeAttributes.exe  <kontoname> remove

Das lässt sich auch gleich bei mehreren Objekten in einer TXT-Liste erledigen (Die Liste muss nur den Kontonamen enthalten, sonst nichts):

for /f %i in ('type liste.txt') do RemoveExchangeAttributes %i remove

Exchange 2003 entfernen – Fehler 0xC0070035

Problem

Ein alter Exchange 2003 Server soll sauber deinstalliert werden. Das geschieht natürlich am besten über die Deinstallationsroutine, diese bricht aber ab.

Das Exchange-Setup legt ein Log über seine Tätigkeiten ab: C:\Exchange Server Setup Progress.log
 Fehlermeldung während Deinstallation
 HrPromptForCDIfNecessary: encountered error 0XC0070035
 HrPromptForCDIfNecessary: encountered error 0XC0070035, sleeping for 20 seconds before trying again
 [20:35:35] ScFindFileInDirTree (f:\titanium\admin\src\libs\base\basemisc.cxx:2068)
 Error code 0XC0070035 (53): Der Netzwerkpfad wurde nicht gefunden.

Lösung

Das Setup aus <buchstabe>:\SETUP\I386\setup.exe von der Orginal-Installations CD aufrufen. Dann ganz normal deinstallieren, das Setup läuft dann ohne diesen Fehler durch. Achtug, die CD muss zur installierten Version passen: Es gibt einen Standard-Datenträger, eine Enterprise-Version und eine SBS-Edition. Jeweils diese nocheinmal als Retail/OEM und als Volumenlizenz. Die VL-Datenträger funktionieren (sofern die Edition passt) eigentlich immer.

In ganz wiederspenstigen Fällen hilft aber immer das manuelle entfernen von Exchange.