Comment supprimer cet objet ordinateur Active Directory orphelin (de préférence avec PowerShell)?

20

Je travaille à partir d'un poste de travail Windows 7, avec PowerShell v2.0, et j'essaie de supprimer un objet particulier (orphelin?) Du LostAndFoundconteneur dans une forêt et un domaine FL 2008 R2 avec la corbeille Active Directory activée et sans succès avec quoi que ce soit .

Surtout, je dois supprimer cet objet, et cet objet uniquement (plutôt que de supprimer chaque objet avec la IsDeletedpropriété, ce qui semble être tout ce que je peux trouver de l'aide).

Je dois le supprimer, car pour résoudre une relation de confiance rompue, l'ordinateur a été disjoint du domaine (ce qui a vraisemblablement fait que l'objet aille dans la corbeille, puis dans le LostAndFoundconteneur), et nous aimerions le lui donner son nom d'origine (qui est basé sur le numéro d'étiquette de l'actif sur le PC). Les tentatives pour rejoindre l'ordinateur au domaine avec le nom correct ont échoué avec le message d'erreur ci-dessous ( The specified account does not exist)

entrez la description de l'image ici

et essayer de le renommer avec le nom correct une fois qu'il est déjà sur le domaine échoue avec le message d'erreur ci-dessous ( The account already exists)

entrez la description de l'image ici

donc le PC réel est actuellement assis là avec un nom incorrect, que je dois rectifier.

Cependant, la tentative de suppression de cet objet AD donne l'erreur: The specified account does not exist. Le nom distinctif de l'objet a un caractère \(barre oblique inverse), qui, je suppose, est dû au fait qu'il se trouve dans le LostAndFoundconteneur, et je me demande si c'est le problème ... et comment le résoudre. J'exécute mon shell en tant que domain admin, j'ai vérifié que le domain adminsgroupe a le contrôle total et la propriété de l'objet en question, et je n'arrive pas à comprendre celui-ci.

L'objet en question (quelque peu expurgé):

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

Rien de ce que j'ai essayé ne semble fonctionner, et j'ai beaucoup essayé. Sur cette note, ce que j'ai essayé, ci-dessous.

Tout d'abord, avec une applet de commande PowerShell simple, une ligne:


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

Ensuite, la même chose, référençant le GUID à la place.


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

Ensuite, lisez d'abord la valeur dans une variable. (Essayé avec GUID et DN, n'en affichant qu'un, car ils donnent la même erreur).


$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

Ensuite, j'ai pensé que je pourrais vivre avec avoir à appeler DSRM au lieu de le faire en mode natif.


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.

Ensuite, j'ai dit au diable de le rendre automatisable, je vais juste faire un clic droit et le supprimer via ADSIedit .

entrez la description de l'image ici


Alors, finalement, j'avale ma fierté et je demande ici. Comment diable puis-je me débarrasser de ce fichu objet? Il existe clairement et son existence pose des problèmes, mais toutes mes tentatives pour le supprimer d'Active Directory se heurtent à des mensonges, des putains de mensonges et des messages d'erreur.


Mise à jour:

Autres choses qui n'ont pas fonctionné, sur la base des commentaires, suggestions et discussions avec ServerFaulters:

Échapper le 0, comme si le \0représente un octet nul.


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

Échapper à l'ensemble \0A, comme s'il s'agissait d'un retour chariot ou d'une nouvelle ligne, comme sous DOS (essayé avec `n,` r, `n`r et` r`n). Tous ont renvoyé la même erreur, donc ne sont affichés qu'une seule fois.


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

Échapper \0Aà un flux de formulaire (ouais, devenir un peu désespéré).


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

Ensuite, j'ai pensé que je devais déterminer si le \0Apersonnage était même le problème, alors j'ai choisi un autre objet qui ne m'intéressait pas dans la corbeille AD avec la \0Achaîne et j'ai essayé de le faire sauter. Ça a marché.


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
la source
4
Les questions sur les pannes de serveur doivent démontrer une compréhension minimale de la technologie en question. Sinon, le message se transforme souvent en forum de discussion , au lieu de simples questions / réponses. Le meilleur conseil que nous puissions vous donner est d'embaucher un consultant pour vous aider ou de poursuivre vos recherches sur les bases de cette technologie.
TheCleaner
Ne $C = Get-ADObject -Filter { Name -Like '*DEL:*' }retourner que votre orphelin? Si oui, faites Remove-ADObject -Identity $C.DistinguishedNameque \0c'est un terminateur nul.
Ryan Ries
@RyanRies Il ne renvoie que mon objet, mais son exécution renvoie également la même The specified account does not existerreur. Pour ce que ça vaut, j'ai également essayé de traiter le \0comme un octet nul (et de l'échapper), ainsi que de le traiter \A0comme un retour chariot / saut de ligne (comme c'est le cas sous DOS), également sans joie. Diverses tentatives de deviner et d'échapper aux \A0personnages ont été rencontrées avec The object name has bad syntaxet Directory object not found. :(
HopelessN00b
Bummer ... J'utilise cette technique sur des objets de résolution de conflits ( '*CNF:*') tout le temps et cela fonctionne parfaitement.
Ryan Ries

Réponses:

3

Selon l'ingénieur de support Microsoft avec qui j'ai parlé ... et l'ingénieur Microsoft auquel il m'a fait parvenir ... et leur responsable, la réponse courte est que la seule façon de me débarrasser de cet objet maudit est de faire une restauration faisant autorité avant l'apparence de cet objet dans le LostAndFoundconteneur. Je suis convaincu que je pourrais également m'en débarrasser en démarrant tous les contrôleurs de domaine sur des LiveCD et en modifiant manuellement la base de données AD, mais à court de ces deux non-options, je suis coincé avec.


Quant à savoir comment et pourquoi c'est le cas:

Nous avons exécuté un repadmin /showobjmetacontre l'objet (pour jeter un œil à ses métadonnées) et avons pu déterminer à partir de la isDeletedversion de l'objet ( 2) qu'il avait été supprimé, puis restauré de manière inattendue et infructueuse / partiellement, ce qui est à l'origine du problème. Il a été suggéré, et il me semble probable, qu'après que l'objet a été restauré, mais avant que la modification ne soit complètement répliquée, il a été supprimé à nouveau, ainsi que son unité d'organisation parent, ce qui a entraîné l'échec de la restauration et l'a conduit à être considéré comme orphelin. objet par au moins certains de nos contrôleurs de domaine, l'atterrissant dans le LostAndFoundconteneur.

À la suite de la restauration partielle, il ne peut pas être restauré. Du fait que l'objet SAMAccountTypeest vide , il ne peut pas être supprimé (ou modifié).

L' SAMAccountTypeattribut est une valeur qui ne peut être modifiée par aucun utilisateur, et tenter de le faire génère l'erreur ci-dessous:

entrez la description de l'image ici

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

Nous ne pouvons pas restaurer l'objet pour que le système (Security Accounts Manager) définisse cet attribut en raison de l'état partiellement restauré dans lequel il se trouve, et nous ne pouvons pas le supprimer (ou le modifier) ​​sans une valeur valide pour cet attribut.


Cependant, comme il est trop intéressant pour moi de m'en éloigner, je vais fouiller un moment et voir si je ne peux pas trouver un moyen de contourner cela, ou au moins élargir mes connaissances sur AD un peu plus dans la tentative. Beats dépannage des imprimantes ... et franchement, il s'avère qu'un ordinateur me disant "WILL_NOT_PERFORM" est un défi auquel je ne peux pas résister.

Oh oui vous jouerez, bon sang!

HopelessN00b
la source
1

Sur la base de ce message , vous devrez peut-être essayer de supprimer l'objet sur des contrôleurs de domaine spécifiques. Vous pouvez essayer d'exécuter votre Get-ADObject avec le paramètre -Server afin de déterminer si l'objet est limité à des contrôleurs de domaine spécifiques. Ensuite, je ferais la même chose avec Remove-ADObject.

Tim Ferrill
la source
Cela ne semble pas être le problème, car les deux DC de mon site contiennent l'objet et la réplication fredonne correctement, mais cela ne fait jamais de mal de faire un repadmindiagnostic approfondi (que j'exécute depuis que j'ai perdu espoir de c'est un problème avec le nom de l'objet), donc bonne réponse ... tout simplement pas la réponse ici. Lorsque les diags seront terminés, je mettrai à jour mon message.
HopelessN00b
Semblait comme une étape de dépannage raisonnable de toute façon. Merci pour le vote positif.
Tim Ferrill
0

J'ai une idée qui pourrait bien fonctionner, cela pourrait sembler un peu simple ou inhabituel, mais si je me souviens bien, cela a fonctionné pour moi dans le passé avec des comptes orphelins. Si vous pouvez déterminer le nom exact du compte, le système sur lequel vous travaillez, que ce soit un compte utilisateur ou un compte PC / serveur, essayez de créer temporairement un compte du même type et du même nom. Donc, vous remplissez essentiellement les blancs, pour ainsi dire et donnez au système exactement ce qu'il veut.

Donc, s'il s'agit d'un compte PC / serveur, demandez à une machine de rejoindre le domaine avec le nom exact qu'il recherche, mais uniquement dans le but de créer le compte. Ou s'il s'agit d'un compte utilisateur, recréez le compte utilisateur avec exactement le même nom, etc. vous devrez peut-être exécuter la commande gpupdate / f dans l'invite de commande pour que le serveur reconnecte le compte nouvellement recréé à l'unité d'organisation orpheline.

Ensuite, essayez de supprimer l'unité d'organisation orpheline que vous vouliez initialement supprimer. Une fois l'unité d'organisation nettoyée, vous pouvez supprimer le compte que vous avez créé pour cette tâche.

J'espère que cela vous aide

Frank R
la source