Je travaille à partir d'un poste de travail Windows 7, avec PowerShell v2.0, et j'essaie de supprimer un objet particulier (orphelin?) Du LostAndFound
conteneur 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 IsDeleted
proprié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 LostAndFound
conteneur), 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
)
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
)
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 LostAndFound
conteneur, 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 admins
groupe 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 .
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 \0
repré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=SomeComputer♀DEL:...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 \0A
personnage é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 \0A
chaî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
la source
$C = Get-ADObject -Filter { Name -Like '*DEL:*' }
retourner que votre orphelin? Si oui, faitesRemove-ADObject -Identity $C.DistinguishedName
que\0
c'est un terminateur nul.The specified account does not exist
erreur. Pour ce que ça vaut, j'ai également essayé de traiter le\0
comme un octet nul (et de l'échapper), ainsi que de le traiter\A0
comme un retour chariot / saut de ligne (comme c'est le cas sous DOS), également sans joie. Diverses tentatives de deviner et d'échapper aux\A0
personnages ont été rencontrées avecThe object name has bad syntax
etDirectory object not found
. :('*CNF:*'
) tout le temps et cela fonctionne parfaitement.Réponses:
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
LostAndFound
conteneur. 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 /showobjmeta
contre l'objet (pour jeter un œil à ses métadonnées) et avons pu déterminer à partir de laisDeleted
version 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 leLostAndFound
conteneur.À la suite de la restauration partielle, il ne peut pas être restauré. Du fait que l'objet
SAMAccountType
est vide , il ne peut pas être supprimé (ou modifié).L'
SAMAccountType
attribut est une valeur qui ne peut être modifiée par aucun utilisateur, et tenter de le faire génère l'erreur ci-dessous: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!
la source
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.
la source
repadmin
diagnostic 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.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
la source