Wie lösche ich dieses verwaiste Active Directory-Computerobjekt (vorzugsweise mit PowerShell)?

20

Ich arbeite mit PowerShell 2.0 von einer Windows 7-Arbeitsstation aus und versuche, ein bestimmtes (verwaistes?) Objekt aus dem LostAndFoundContainer in einer 2008 R2 FL-Gesamtstruktur und -Domäne mit aktiviertem Active Directory-Papierkorb zu löschen mit irgendetwas .

Wichtig ist, dass ich dieses Objekt und nur dieses Objekt löschen muss (anstatt jedes Objekt mit der IsDeletedEigenschaft zu löschen , was alles ist, wofür ich Hilfe finden kann).

Ich muss es löschen, da zum Auflösen einer unterbrochenen Vertrauensstellung der Computer von der Domäne getrennt wurde (was vermutlich dazu führte, dass das Objekt in den Papierkorb und dann in den LostAndFoundContainer verschoben wurde ), und wir möchten es weitergeben seinen ursprünglichen Namen zurück (der auf der Asset-Tag-Nummer auf dem PC basiert). Versuche, den Computer mit dem richtigen Namen wieder zur Domäne hinzuzufügen, scheiterten mit der folgenden Fehlermeldung ( The specified account does not exist)

Bildbeschreibung hier eingeben

und der Versuch, ihn in den richtigen Namen umzubenennen, sobald er sich bereits in der Domäne befindet, schlägt mit der folgenden Fehlermeldung fehl ( The account already exists)

Bildbeschreibung hier eingeben

der eigentliche PC sitzt also gerade dort mit einem falschen Namen, den ich korrigieren muss.

Um jedoch dieses AD - Objekt zu löschen versuchen , ergibt den Fehler: The specified account does not exist. Der definierte Name des Objekts enthält einen \(umgekehrten) Schrägstrich, der vermutlich darauf zurückzuführen ist, dass sich das Objekt im LostAndFoundContainer befindet, und ich frage mich, ob das das Problem ist ... und wie Sie es beheben können. Ich führe meine Shell als a aus und habe festgestellt domain admin, dass die domain adminsGruppe die volle Kontrolle und das Eigentum an dem betreffenden Objekt hat und ich kann es einfach nicht herausfinden.

Das fragliche Objekt (etwas überarbeitet):

Get-ADObject "CN=SomeComputer\0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv" -IncludeDeletedObjects -Properties *

accountExpires                  : 9223372036854775807
CanonicalName                   : MyEmployer.prv/LostAndFound/SomeComputer
                                  DEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6
CN                              : SomeComputer
                                  DEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6
codePage                        : 0
countryCode                     : 0
Created                         : 12/7/2012 9:25:30 PM
createTimeStamp                 : 12/7/2012 9:25:30 PM
Deleted                         :
Description                     : HP6300
DisplayName                     :
DistinguishedName               : CN=SomeComputer\0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=
                                  prv
dNSHostName                     : SomeComputer.MyEmployer.prv
dSCorePropagationData           : {5/21/2014 1:40:31 PM, 12/31/1600 7:00:00 PM}
instanceType                    : 4
isCriticalSystemObject          : False
isDeleted                       :
LastKnownParent                 : OU=Workstations,OU=Computers,OU=One of Our Sites,DC=MyEmployer,DC=prv
lastLogonTimestamp              : 130451668084269817
localPolicyFlags                : 0
memberOf                        : {CN=PCMilerComputers,DC=MyEmployer,DC=prv}
Modified                        : 5/21/2014 1:40:54 PM
modifyTimeStamp                 : 5/21/2014 1:40:54 PM
msDS-LastKnownRDN               : SomeComputer
Name                            : SomeComputer
                                  DEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6
nTSecurityDescriptor            : System.DirectoryServices.ActiveDirectorySecurity
ObjectCategory                  :
ObjectClass                     : computer
ObjectGUID                      : 90a13eaa-c7b0-4258-bebb-87b7aed39ec6
objectSid                       : S-1-5-21-1708945318-605057401-313073093-5882480
operatingSystem                 : Windows 7 Enterprise
operatingSystemServicePack      : Service Pack 1
operatingSystemVersion          : 6.1 (7601)
primaryGroupID                  : 515
ProtectedFromAccidentalDeletion : False
pwdLastSet                      : 130451667147545072
sAMAccountName                  : SomeComputer$
sDRightsEffective               : 15
servicePrincipalName            : {HOST/SomeComputer, HOST/SomeComputer.MyEmployer.prv}
userAccountControl              : 4096
userCertificate                 : [Not included]
uSNChanged                      : 54007434
uSNCreated                      : 5004556
whenChanged                     : 5/21/2014 1:40:44 PM
whenCreated                     : 12/7/2012 9:25:30 PM

Nichts, was ich versucht habe, scheint zu funktionieren, und ich habe viel versucht. In diesem Sinne, was ich unten versucht habe.

Zunächst mit einem einfachen einzeiligen PowerShell-Cmdlet:


Get-ADObject "CN=SomeComputer\0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv" -IncludeDeletedObjects | Remove-ADObject

Confirm
Are you sure you want to perform this action?
Performing operation "Remove" on Target
"CN=SomeComputer\0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): y
Remove-ADObject : The specified account does not exist
At line:1 char:145
+ Get-ADObject "CN=SomeComputer\0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv" -IncludeDeletedObjects | Remove-ADObject <<<<
    + CategoryInfo          : NotSpecified: (CN=SomeComputer\0ADE...MyEmployer,DC=prv:ADObject) [Remove-ADObject], ADException
    + FullyQualifiedErrorId : The specified account does not exist,Microsoft.ActiveDirectory.Management.Commands.RemoveADObject

Dann dasselbe, indem stattdessen auf die GUID verwiesen wird.


Get-ADObject "90a13eaa-c7b0-4258-bebb-87b7aed39ec6"  -IncludeDeletdObjects | Remove-ADObject

Confirm
Are you sure you want to perform this action?
Performing operation "Remove" on Target
"CN=SomeComputer\0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): y
Remove-ADObject : The specified account does not exist
At line:1 char:94
+ Get-ADObject "90a13eaa-c7b0-4258-bebb-87b7aed39ec6"  -IncludeDeletedObjects | Remove-ADObject <<<<
    + CategoryInfo          : NotSpecified: (CN=SomeComputer\0ADE...MyEmployer,DC=prv:ADObject) [Remove-ADObject], ADException
    + FullyQualifiedErrorId : The specified account does not exist,Microsoft.ActiveDirectory.Management.Commands.RemoveADObject

Lesen Sie dann zuerst den Wert in eine Variable. (Versucht sowohl mit GUID als auch mit DN, wobei nur eine angezeigt wird, da sie den gleichen Fehler ergeben).


$blah = "90a13eaa-c7b0-4258-bebb-87b7aed39ec6"
Get-ADObject $blah -IncludeDeletedObjects | Remove-ADObject

Confirm
Are you sure you want to perform this action?
Performing operation "Remove" on Target
"CN=SomeComputer\0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): y
Remove-ADObject : The specified account does not exist
At line:1 char:60
+ Get-ADObject $blah -IncludeDeletedObjects | Remove-ADObject <<<<
    + CategoryInfo          : NotSpecified: (CN=SomeComputer\0ADE...MyEmployer,DC=prv:ADObject) [Remove-ADObject], ADException
    + FullyQualifiedErrorId : The specified account does not exist,Microsoft.ActiveDirectory.Management.Commands.RemoveADObject

Dann dachte ich, ich könnte damit leben , DSRM anrufen zu müssen, anstatt es von Haus aus zu tun.


dsrm "CN=SomeComputer\0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=Lost
AndFound,DC=MyEmployer,DC=prv"

Are you sure you wish to delete CN=SomeComputer\0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv
 (Y/N)? y
dsrm failed:CN=SomeComputer\0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv:The specified account does not exist.

Dann sagte ich verdammt noch mal , ich mache einen Rechtsklick und lösche ihn über ADSIedit .

Bildbeschreibung hier eingeben


Also, endlich schlucke ich meinen Stolz und frage hier. Wie zum Teufel werde ich dieses verdammte Objekt los? Es ist eindeutig vorhanden, und seine Existenz verursacht Probleme, aber alle meine Versuche, es aus Active Directory zu löschen, stoßen auf Lügen, verdammte Lügen und Fehlermeldungen.


Aktualisieren:

Andere Dinge, die aufgrund von Kommentaren, Vorschlägen und Diskussionen mit ServerFaulters nicht funktioniert haben:

Escaping 0, als ob das \0ein Null-Byte darstellt.


Get-ADObject "CN=SomeComputer`0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv" -IncludeDeletedObjects | Remove-ADObject

Get-ADObject : No superior reference has been configured for the directory service. The directory service is therefore unable to issue referrals to objects outside this forest
At line:1 char:13
+ Get-ADObject <<<<  "CN=SomeComputer`0ADEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv" -Includ
eDeletedObjects | Remove-ADObject
    + CategoryInfo          : NotSpecified: (CN=SomeComputer ADEL...MyEmployer,DC=prv:ADObject) [Get-ADObject], ADException
    + FullyQualifiedErrorId : No superior reference has been configured for the directory service. The directory service is therefore unable to issue referrals to objects outside this forest,Microsoft.ActiveDirectory.Management.Commands.GetADObject

Escaping das Ganze \0A, als wäre es ein Wagenrücklauf oder eine neue Zeile, wie in DOS (versucht mit `n,` r, `n`r und` r`n). Alle haben den gleichen Fehler zurückgegeben, also nur einmal angezeigt.


Get-ADObject "SomeComputer`n`rDEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv" -IncludeDeletedObjects | Remove-ADObject

Get-ADObject : The object name has bad syntax
At line:1 char:13
+ Get-ADObject <<<<  "CN=SomeComputer`n`rDEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv" -IncludeDeletedObjects | Remove-ADObject
    + CategoryInfo          : NotSpecified: (CN=SomeComputer
DEL...MyEmployer,DC=prv:ADObject) [Get-ADObject], ADException
    + FullyQualifiedErrorId : The object name has bad syntax,Microsoft.ActiveDirectory.Management.Commands.GetADObject

Flüchten die \0Aals eine Form Feed (ja, ein bisschen verzweifelt bekommen).


Get-ADObject "CN=SomeComputer`fDEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv" -IncludeDeletedObjects | Remove-ADObject

Get-ADObject : Directory object not found
At line:1 char:13
+ Get-ADObject <<<<  "CN=SomeComputer`fDEL:90a13eaa-c7b0-4258-bebb-87b7aed39ec6,CN=LostAndFound,DC=MyEmployer,DC=prv" -IncludeDeletedObjects | Remove-ADObject
    + CategoryInfo          : ObjectNotFound: (CN=SomeComputerDEL:...MyEmployer,DC=prv:ADObject) [Get-ADObject], ADIdentityNotFoundException
    + FullyQualifiedErrorId : Directory object not found,Microsoft.ActiveDirectory.Management.Commands.GetADObject

Dann dachte ich mir, ich sollte herausfinden, ob der \0ACharakter überhaupt das Problem ist, also suchte ich mir ein anderes Objekt im AD-Papierkorb aus, das mir egal war \0A, und versuchte, es wegzublasen. Es funktionierte.


Get-ADObject -Filter { Name -Like '*DEL:*' } -IncludeDeletedObjects | Remove-ADObject

Confirm
Are you sure you want to perform this action?
Performing operation "Remove" on Target "CN=SomeServer-SomeJackass HP LaserJet 1320
PS\0ADEL:eddb23e7-b8d8-4d00-801f-22d82c169d66,CN=Deleted Objects,DC=MyEmployer,DC=prv".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): y

Confirm
Are you sure you want to perform this action?
Performing operation "Remove" on Target "CN=SomeServer-SomeJackass HP LaserJet 1320 PCL
5e\0ADEL:6e72e78f-f110-492c-ad50-91107f6fbd6a,CN=Deleted Objects,DC=MyEmployer,DC=prv".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): y

HopelessN00b
quelle
4
Fragen zu Serverfehlern müssen ein Mindestverständnis für die betreffende Technologie aufweisen. Andernfalls wird der Beitrag häufig zu einem Diskussionsforum , anstatt zu direkten Fragen und Antworten. Der beste Rat, den wir Ihnen geben können, ist, einen Berater zu engagieren, der Ihnen hilft oder die Grundlagen dieser Technologie weiter erforscht.
TheCleaner
Kommt $C = Get-ADObject -Filter { Name -Like '*DEL:*' }nur dein Waisenkind zurück? Wenn ja, tun Sie Remove-ADObject -Identity $C.DistinguishedNameDas \0ist ein Nullterminator.
Ryan Ries
@RyanRies Es wird nur mein Objekt zurückgegeben, aber das Ausführen gibt auch den gleichen The specified account does not existFehler zurück. Für das, was es wert ist, habe ich auch versucht, das \0als Null-Byte zu behandeln (und es zu maskieren), sowie das \A0als Wagenrücklauf / Zeilenumbruch zu behandeln (wie es in DOS ist), auch ohne Freude. Verschiedene Versuche zu erraten und zu entkommen , die \A0Zeichen wurden mit erfüllt The object name has bad syntaxund Directory object not found. :(
HopelessN00b
Schade ... ich benutze diese Technik die '*CNF:*'ganze Zeit bei Konfliktlösungsobjekten ( ) und sie funktioniert perfekt.
Ryan Ries

Antworten:

3

Dem Microsoft-Supporttechniker zufolge, mit dem ich gesprochen habe, und dem Microsoft-Ingenieur, zu dem er mich eskaliert hat, und seinem Manager, ist die kurze Antwort, dass die einzige Möglichkeit, mich von diesem verfluchten Objekt zu befreien, darin besteht, eine autorisierende Wiederherstellung vor dem Ausführen durchzuführen Das Aussehen dieses Objekts im LostAndFoundContainer. Ich bin überzeugt, dass ich mich auch davon befreien könnte, indem ich alle Domänencontroller auf LiveCDs boote und die AD-Datenbank manuell bearbeite, aber abgesehen von diesen beiden Nicht-Optionen bin ich dabei geblieben.


Wie und warum ist dies der Fall:

Wir haben ein repadmin /showobjmetagegen das Objekt ausgeführt (um einen Blick in seine Metadaten zu werfen) und konnten anhand der Objektversion isDeleted( 2) feststellen, dass es gelöscht und dann unerwartet und erfolglos / teilweise wiederhergestellt wurde, was das Problem verursacht. Es wurde vermutet, dass das Objekt, nachdem es wiederhergestellt wurde, aber bevor die Änderung vollständig repliziert wurde, zusammen mit der übergeordneten Organisationseinheit erneut gelöscht wurde, was dazu führte, dass die Wiederherstellung fehlschlug und es als verwaist angesehen wurde Objekt von mindestens einigen unserer Domänencontroller, landen es in den LostAndFoundContainer.

Aufgrund der teilweisen Wiederherstellung kann sie nicht wiederhergestellt werden. Da das Objekt SAMAccountTypeleer ist , kann es nicht gelöscht (oder geändert) werden.

Das SAMAccountTypeAttribut ist ein Wert, der von keinem Benutzer geändert werden kann. Wenn Sie dies versuchen, wird der folgende Fehler ausgegeben:

Bildbeschreibung hier eingeben

Operation failed. Error code: 0x209a
Access to the attribute is not permitted because the attribute is owned by the Security Accounts Manager (SAM).

0000209A: SvcErr: DSID-031A1021, problem 5003
(WILL_NOT_PERFORM), data 0

Das Objekt kann nicht wiederhergestellt werden, damit das System (Sicherheitskonten-Manager) dieses Attribut festlegt, da es sich in einem teilweise wiederhergestellten Zustand befindet. Es kann nicht gelöscht (oder geändert) werden, ohne dass ein gültiger Wert für dieses Attribut vorliegt.


Da dies jedoch zu interessant für mich ist, um einfach davon wegzugehen, werde ich eine Weile herumstöbern und nachsehen, ob ich nicht auf die Idee komme, das zu umgehen, oder zumindest mein Wissen darüber erweitern AD etwas mehr im Versuch. Beats Troubleshooting Printers ... und ehrlich gesagt stellt sich heraus, dass ein Computer, der mir "WILL_NOT_PERFORM" sagt, eine Herausforderung ist, der ich nicht widerstehen kann.

Oh ja, du wirst auftreten, verdammt!

HopelessN00b
quelle
1

Aufgrund dieses Beitrags müssen Sie möglicherweise versuchen, das Objekt auf bestimmten Domänencontrollern zu löschen. Sie können versuchen, Get-ADObject mit dem Parameter -Server auszuführen, um festzustellen, ob das Objekt auf bestimmte Domänencontroller beschränkt ist. Dann würde ich dasselbe mit dem Remove-ADObject machen.

Tim Ferrill
quelle
Das scheint nicht das Problem zu sein, da beide Domänencontroller an meinem Standort das Objekt enthalten und die Replikation sehr lange funktioniert, aber es schadet nie, eine gründliche repadminDiagnose durchzuführen (auf die ich seitdem keine Hoffnung mehr habe) es ist ein Problem mit dem Objektnamen), also gute Antwort ... nur wahrscheinlich nicht die Antwort hier. Wenn die Diags abgeschlossen sind, aktualisiere ich meinen Beitrag.
HopelessN00b
Schien sowieso ein vernünftiger Fehlerbehebungsschritt. Vielen Dank für die Abstimmung.
Tim Ferrill
0

Ich habe eine Idee, die vielleicht funktioniert, die vielleicht ein bisschen einfach oder ungewöhnlich wirkt, aber wenn ich mich richtig erinnere, hat das in der Vergangenheit bei verwaisten Accounts funktioniert. Wenn Sie den genauen Kontonamen ermitteln können, nach dem Sie suchen, sei es ein Benutzerkonto oder ein PC / Server-Konto, versuchen Sie, vorübergehend ein Konto mit demselben Typ und demselben Namen zu erstellen. Sie füllen also sozusagen die Lücken aus und geben dem System genau das, was es will.

Wenn es sich also um ein PC / Server-Konto handelt, lassen Sie einen Computer mit dem genauen Namen, nach dem er sucht, zur Domäne zurückkehren, jedoch nur zum Erstellen des Kontos. Oder wenn es sich um ein Benutzerkonto handelt, erstellen Sie das Benutzerkonto mit genau demselben Namen usw. Möglicherweise müssen Sie den Befehl gpupdate / f in der Eingabeaufforderung ausführen, damit der Server die Verbindung des neu erstellten Kontos mit der verwaisten Organisationseinheit wiederherstellt.

Fahren Sie dann mit dem Versuch fort, die verwaiste Organisationseinheit zu löschen, die Sie ursprünglich löschen wollten. Sobald Sie die Organisationseinheit bereinigt haben, können Sie das für diese Aufgabe erstellte Konto löschen.

Ich hoffe, das hilft dir beim Jubeln

Frank R
quelle