Powershell Quick-Tip: Remove-ADUser vs. Exchange

Will man Benutzer mit dem Befehl Remove-ADUser löschen und hat einen Exchange in seiner Umgebung bekommt man manchmal folgende Fehlermeldung: Der Verzeichnisdienst kann den angeforderten Vorgang nur an einem Endknotenobjekt durchführen

Was die Ursache für den Fehler ist und wie man ihn umgehen kann, werden wir uns im Folgenden genauer anschauen.

Das Problem

Eine ActiveDirectory Umgebung ist in einer Art Baumstruktur aufgebaut. Es gibt viele Verzweigungen von der Domäne in OUs und weitere OUs bis zum Blatt, dem Benutzer selbst. Ein solches Blatt wird auch als Endknotenpunkt bezeichnet.

Hat man einen Exchange-Server in seiner Umgebung und hat Active-Sync für die  Benutzer freigeschaltet, passiert beim erstmaligen Anmelden mit einem Active-Sync-Gerät folgendes: Im AD wird unterhalb des verwendeten Benutzerkontos ein neues Objekt für das Active-Sync-Gerät angelegt.

Nun ist der betroffene Benutzer leider kein Endknotenpunkt mehr, sondern ist vergleichbar mit einer OU, also quasi eine Art Container, in dem weitere Objekte enthalten sind.

Will man nun einen Benutzer mit der Powershell löschen, denkt man direkt an den Befehl Remove-ADUser. Der Befehl Remove-ADUser kann allerdings nur Endknotenpunkte (Blätter) löschen. Der Befehl wird also einen Fehler melden.

Die Lösung

Um ein beliebiges AD-Objekt zu löschen, verwenden wir den Befehl Remove-ADObject. Da dieses den Benutzer allerdings nicht einfach so unter seinem Benutzernamen findet, verwenden wir einen kleinen Trick. Folgender Befehl sucht den Benutzer und übergibt das Objekt dann dem Remove Befehl:

Get-AdUser BENUTZER | Remove-ADObject -Recursive -Confirm:$false