Estou trabalhando em uma estação de trabalho Windows 7, com o PowerShell v2.0, e tentando excluir um objeto específico (órfão?) Do LostAndFound
contêiner em uma floresta e domínio FL 2008 R2 com a Lixeira do Active Directory ativada e sem sorte com qualquer coisa .
É importante ressaltar que preciso excluir este objeto, e apenas esse objeto (em vez de excluir todos os objetos com a IsDeleted
propriedade, o que parece ser tudo em que posso encontrar ajuda).
Preciso excluí-lo, porque, para resolver um relacionamento de confiança interrompido, o computador foi separado do domínio (presumivelmente fazendo com que o objeto fosse para a Lixeira e depois para o LostAndFound
contêiner), e gostaríamos de dar a ele seu nome original de volta (que é baseado no número da etiqueta do ativo no PC). Tentativas de reconectar o computador ao domínio com o nome correto falharam com a mensagem de erro abaixo ( The specified account does not exist
)
e tentar renomeá-lo para o nome correto, uma vez que já esteja no domínio, falhará com a mensagem de erro abaixo ( The account already exists
)
então o PC atual está sentado lá com um nome incorreto, o que eu preciso corrigir.
No entanto, a tentativa de excluir este objeto AD produz o erro: The specified account does not exist
. O nome distinto do objeto tem um \
caractere (barra invertida), que eu suponho que seja devido a ele estar no LostAndFound
contêiner, e estou me perguntando se esse é o problema ... e como corrigi-lo. Estou executando meu shell como um domain admin
, verifiquei que o domain admins
grupo tem controle total e propriedade do objeto em questão, e simplesmente não consigo entender isso.
O objeto em questão (um pouco redigido):
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 que eu tentei parece funcionar, e eu tentei muito. Na mesma nota, o que eu tentei, abaixo.
Primeiro, com um cmdlet simples do PowerShell de uma linha:
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
Em seguida, a mesma coisa, referenciando o GUID.
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
Então, lendo o valor em uma variável primeiro. (Tentei com o GUID e o DN, mostrando apenas um, pois eles produzem o mesmo erro).
$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
Então imaginei que poderia viver tendo que ligar para o DSRM em vez de fazê-lo nativamente.
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.
Então eu disse para o inferno ao torná-lo automatizável, vou apenas clicar com o botão direito e excluí-lo através do ADSIedit .
Então, finalmente, estou engolindo meu orgulho e perguntando aqui. Como diabos eu me livro desse maldito objeto? Existe claramente, e sua existência está causando problemas, mas todas as minhas tentativas de excluí-lo do Active Directory são recebidas com mentiras, mentiras condenadas e mensagens de erro.
Atualizar:
Outras coisas que não funcionaram, com base em comentários, sugestões e discussões com o ServerFaulters:
Escapando do 0
, como se o \0
representasse um 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 o todo \0A
, como se fosse um retorno de carro ou uma nova linha, como no DOS (tente com `n,` r, `n`r e` r`n). Todos retornaram o mesmo erro, sendo mostrados apenas uma 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 \0A
como um feed de formulário (sim, ficando um pouco 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=SomeComputer♀DEL:...MyEmployer,DC=prv:ADObject) [Get-ADObject], ADIdentityNotFoundException
+ FullyQualifiedErrorId : Directory object not found,Microsoft.ActiveDirectory.Management.Commands.GetADObject
Então imaginei que deveria determinar se o \0A
personagem era o problema, então escolhi um objeto diferente com o qual não me importava na lixeira do AD com a \0A
corda e tentei afastá-lo. Funcionou.
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
fonte
$C = Get-ADObject -Filter { Name -Like '*DEL:*' }
apenas seu órfão?Remove-ADObject -Identity $C.DistinguishedName
Nesse caso, faça Isso\0
é um terminador nulo.The specified account does not exist
erro. Pelo que vale a pena, eu também tentei tratar o\0
byte nulo (e escapá-lo), bem como tratar o\A0
retorno de carro / quebra de linha (como no DOS), também sem alegria. Várias tentativas de adivinhar e escapar dos\A0
personagens foram cumpridas comThe object name has bad syntax
eDirectory object not found
. :('*CNF:*'
) o tempo todo e funciona perfeitamente.Respostas:
De acordo com o engenheiro de suporte da Microsoft com quem falei ... e o engenheiro da Microsoft que ele me escalou para ... e seu gerente, a resposta curta é que a única maneira de me livrar desse objeto amaldiçoado é fazer uma restauração autorizada antes a aparência desse objeto no
LostAndFound
contêiner. Estou convencido de que também poderia me livrar disso inicializando todos os controladores de domínio nos LiveCDs e editando manualmente o banco de dados do AD, mas, com exceção dessas duas não opções, estou presa a ele.Quanto a como e por que esse é o caso:
Executamos um
repadmin /showobjmeta
contra o objeto (para examinar seus metadados) e pudemos determinar a partir daisDeleted
versão do objeto (2
) que ele foi excluído e, em seguida, inesperadamente e sem sucesso / parcialmente restaurado, que é o que está causando o problema. Foi sugerido, e me parece provável, que depois que o objeto foi restaurado, mas antes que a alteração fosse completamente replicada, ele foi excluído novamente, juntamente com a UO pai, causando a falha da restauração e resultando em uma operação considerada órfã. objeto de pelo menos alguns de nossos controladores de domínio, aterrando-o noLostAndFound
contêiner.Como resultado da restauração parcial, ela não pode ser restaurada. Como o objeto está
SAMAccountType
vazio , ele não pode ser excluído (ou modificado).O
SAMAccountType
atributo é um valor que não pode ser alterado por nenhum usuário e, ao fazer isso, gera o erro abaixo:Não podemos restaurar o objeto para que o sistema (Security Accounts Manager) defina esse atributo devido ao estado parcialmente restaurado em que está e não podemos excluí-lo (ou modificá-lo) sem um valor válido para esse atributo.
No entanto, como esse é um caso muito interessante para eu simplesmente me afastar, vou bisbilhotar por um tempo e ver se não consigo encontrar uma maneira de contornar isso, ou pelo menos expandir meu conhecimento sobre AD um pouco mais na tentativa. Supera a solução de problemas de impressoras ... e, francamente, acontece que um computador me dizendo "WILL_NOT_PERFORM" é um desafio que não consigo resistir.
Oh sim, você vai se apresentar, caramba!
fonte
Com base nesta postagem , talvez você precise excluir o objeto em controladores de domínio específicos. Você pode tentar executar o Get-ADObject com o parâmetro -Server para determinar se o objeto está limitado a controladores de domínio específicos. Então eu faria o mesmo com o Remove-ADObject.
fonte
repadmin
diagnóstico completo (que venho executando desde que perdi a esperança de sendo um problema com o nome do objeto), resposta tão boa ... provavelmente não será a resposta aqui. Quando as diags forem concluídas, atualizarei minha postagem.Tenho uma ideia que pode funcionar, pode parecer um pouco simples ou fora do comum, mas se bem me lembro, isso funcionou para mim no passado com contas órfãs. Se você pode determinar o nome exato da conta, o sistema em que está trabalhando, seja uma conta de usuário ou PC / Server, tente criar temporariamente uma conta do mesmo tipo e do mesmo nome. Então você está essencialmente preenchendo os espaços em branco, por assim dizer e dando ao sistema exatamente o que ele deseja.
Portanto, se for uma conta de PC / servidor, faça com que uma máquina retorne ao domínio com o nome exato que está procurando, mas apenas com o objetivo de criar a conta. Ou, se for uma conta de usuário, recrie a conta de usuário com o mesmo nome, etc. pode ser necessário executar o comando gpupdate / f no prompt de comando para que o servidor reconecte a conta recém-criada à UO órfã.
Em seguida, tente excluir a UO órfã que você originalmente queria excluir. Depois de limpar a UO, você poderá excluir a conta criada para esta tarefa.
Espero que isso ajude você
fonte