¿Cómo elimino este objeto de computadora de Active Directory huérfano (preferiblemente con PowerShell)?

20

Estoy trabajando desde una estación de trabajo de Windows 7, con PowerShell v2.0, y estoy tratando de eliminar un objeto particular (¿huérfano?) Del LostAndFoundcontenedor en un bosque y dominio de 2008 R2 FL con la Papelera de reciclaje de Active Directory habilitada, y no tengo suerte con nada .

Es importante destacar que necesito eliminar este objeto, y solo este objeto (en lugar de eliminar todos los objetos con la IsDeletedpropiedad, que parece ser todo en lo que puedo encontrar ayuda).

Necesito eliminarlo, porque para resolver una relación de confianza rota, la computadora se separó del dominio (presumiblemente haciendo que el objeto vaya a la Papelera de reciclaje, y luego al LostAndFoundcontenedor), y nos gustaría darlo su nombre original de nuevo (que se basa en el número de etiqueta de activo en la PC). Los intentos de volver a unir la computadora al dominio con el nombre correcto fallaron con el siguiente mensaje de error ( The specified account does not exist)

ingrese la descripción de la imagen aquí

e intentar cambiar el nombre al nombre correcto una vez que ya está en el dominio falla con el siguiente mensaje de error ( The account already exists)

ingrese la descripción de la imagen aquí

así que la PC actual está actualmente sentada allí con un nombre incorrecto, que necesito rectificar.

Sin embargo, el intento de eliminar este objeto AD produce el error: The specified account does not exist. El nombre distinguido del objeto tiene un carácter \(barra invertida), lo que supongo se debe a que está en el LostAndFoundcontenedor, y me pregunto si ese es el problema ... y cómo solucionarlo. Estoy ejecutando mi shell como un domain admin, verificado que el domain adminsgrupo tiene el control total y la propiedad del objeto en cuestión, y parece que no puedo entenderlo.

El objeto en cuestión (algo redactado):

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

Nada de lo que he intentado parece funcionar, y he intentado mucho. En esa nota, lo que he intentado, a continuación.

Primero, con un cmdlet PowerShell simple de una línea:


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

Luego, lo mismo, haciendo referencia al GUID en su lugar.


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

Luego, leyendo el valor en una variable primero. (Intenté con GUID y DN, solo mostrando uno, ya que producen el mismo error).


$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

Entonces pensé que podría vivir teniendo que llamar a DSRM en lugar de hacerlo de forma nativa.


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.

Entonces le dije al infierno que lo hiciera automatizable, simplemente haré clic derecho y lo eliminaré a través de ADSIedit .

ingrese la descripción de la imagen aquí


Entonces, finalmente, me estoy tragando mi orgullo y preguntando aquí. ¿Cómo diablos me deshago de este maldito objeto? Claramente existe, y su existencia está causando problemas, sin embargo, todos mis intentos de eliminarlo de Active Directory se encuentran con mentiras, malditas mentiras y mensajes de error.


Actualizar:

Otras cosas que no han funcionado, basadas en comentarios, sugerencias y discusiones con ServerFaulters:

Escapar de 0, como si \0representa un byte nulo.


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

Escapando del todo \0A, como si fuera un retorno de carro o una nueva línea, como en DOS (probado con `n,` r, `n`r y` r`n). Todos devolvieron el mismo error, por lo que solo se muestran una vez.


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

Escapando \0Acomo un formulario de alimentación (sí, un poco desesperado).


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

Luego pensé que debería determinar si el \0Apersonaje era el problema, así que elegí un objeto diferente que no me importaba en la Papelera de reciclaje de AD con la \0Acadena e intenté volarlo. Funcionó.


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
fuente
44
Las preguntas sobre la falla del servidor deben demostrar una comprensión mínima de la tecnología en cuestión. De lo contrario, la publicación a menudo se convierte en un foro de discusión , en lugar de preguntas y respuestas directas. El mejor consejo que podemos darle es contratar a un consultor para que lo ayude o realizar más investigaciones sobre los conceptos básicos de esta tecnología.
TheCleaner
¿ $C = Get-ADObject -Filter { Name -Like '*DEL:*' }Devuelve solo tu huérfano? Si es así, haz Remove-ADObject -Identity $C.DistinguishedNameeso \0es un terminador nulo.
Ryan Ries
@RyanRies Devuelve solo mi objeto, pero la ejecución también devuelve el mismo The specified account does not existerror. Por lo que vale, también he intentado tratar el \0como un byte nulo (y escapar), así como tratarlo \A0como un retorno de carro / salto de línea (como lo es en DOS), también sin alegría. Varios intentos de adivinar y escapar de los \A0personajes se han encontrado con The object name has bad syntaxy Directory object not found. :(
HopelessN00b
Bummer ... Yo uso esa técnica en objetos de resolución de conflictos ( '*CNF:*') todo el tiempo y funciona perfectamente.
Ryan Ries

Respuestas:

3

Según el ingeniero de soporte técnico de Microsoft con el que hablé ... y el ingeniero de Microsoft con el que me contactó ... y su gerente, la respuesta breve es que la única forma de deshacerme de este objeto maldito es hacer una restauración autorizada antes Apariencia de este objeto en el LostAndFoundcontenedor. Estoy convencido de que también podría deshacerme de él arrancando todos los controladores de dominio en LiveCD y editando manualmente la base de datos de AD, pero a falta de esas dos no opciones, estoy atascado.


En cuanto a cómo y por qué este es el caso:

Ejecutamos un comando repadmin /showobjmetacontra el objeto (para echar un vistazo a sus metadatos) y pudimos determinar a partir de la isDeletedversión del objeto ( 2) que se eliminó, y luego se recuperó de forma inesperada y sin éxito, que es lo que está causando el problema. Se sugirió, y me parece probable, que después de que el objeto fue restaurado, pero antes de que el cambio se hubiera replicado por completo, se eliminó nuevamente, junto con su unidad organizativa principal, lo que provocó que la restauración fallara y se considerara huérfano. objetar al menos algunos de nuestros controladores de dominio, aterrizándolo en el LostAndFoundcontenedor.

Como resultado de la restauración parcial, no se puede restaurar. Como resultado de que el objeto SAMAccountTypeesté vacío , no se puede eliminar (o modificar).

El SAMAccountTypeatributo es un valor que ningún usuario puede cambiar, e intentar hacerlo arroja el siguiente error:

ingrese la descripción de la imagen aquí

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

No podemos restaurar el objeto para que el sistema (Administrador de cuentas de seguridad) establezca este atributo debido al estado parcialmente restaurado en el que se encuentra, y no podemos eliminarlo (o modificarlo) sin un valor válido para ese atributo.


Sin embargo, dado que este es un caso demasiado interesante para que simplemente me aleje, voy a hurgar un rato y ver si no puedo encontrar una forma de evitar esto, o al menos ampliar mi conocimiento de AD un poco más en el intento. Es mejor que solucionar problemas con las impresoras ... y, francamente, resulta que una computadora que me dice "WILL_NOT_PERFORM" es un desafío que no puedo resistir.

¡Oh, sí, actuarás, maldita sea!

HopelessN00b
fuente
1

Según esta publicación , es posible que deba intentar eliminar el objeto en controladores de dominio específicos. Puede intentar ejecutar su Get-ADObject con el parámetro -Server para determinar si el objeto está limitado a DC específicos. Luego haría lo mismo con Remove-ADObject.

Tim Ferrill
fuente
Ese no parece ser el problema, ya que tanto los DC en mi sitio contienen el objeto, y la replicación está tarareando mucho, pero nunca está de más hacer un repadmindiagnóstico completo (que he estado ejecutando desde que perdí la esperanza de es un problema con el nombre del objeto), así que es una buena respuesta ... probablemente no sea la respuesta aquí. Cuando se completen los diags, actualizaré mi publicación.
HopelessN00b
Parecía un paso razonable de solución de problemas de todos modos. Gracias por el voto positivo.
Tim Ferrill
0

Tengo una idea que podría funcionar, puede parecer un poco simple o fuera de lo común, pero si recuerdo correctamente, esto me ha funcionado en el pasado con cuentas huérfanas. Si puede determinar el nombre exacto de la cuenta, el sistema en el que está trabajando está buscando, ya sea una cuenta de usuario o una cuenta de PC / servidor, intente crear temporalmente una cuenta del mismo tipo y el mismo nombre. Entonces, básicamente, está completando los espacios en blanco, por así decirlo, y dando al sistema exactamente lo que quiere.

Entonces, si se trata de una cuenta de PC / servidor, haga que una máquina vuelva a unirse al dominio con el nombre exacto que está buscando, pero solo con el fin de crear la cuenta. O si se trata de una cuenta de usuario, vuelva a crearla con el mismo nombre, etc. es posible que deba ejecutar el comando gpupdate / f en el símbolo del sistema para que el servidor vuelva a conectar la cuenta recién recreada con la unidad organizativa huérfana.

Luego, intente eliminar la unidad organizativa huérfana que originalmente quería eliminar. Una vez que limpie la unidad organizativa, puede eliminar la cuenta que creó para esta tarea.

Espero que esto te ayude

Frank R
fuente