如何删除这个孤立的Active Directory计算机对象(最好使用PowerShell)?

我正在使用PowerShell v2.0从Windows 7工作站开始工作,并尝试从启用了Active Directory回收站的2008 R2 FL林和域中的LostAndFound容器中删除特定(孤立的?)对象,并且没有运气与任何事情

重要的是,我需要删除这个对象, 只有这个对象 (而不是删除每个对象的IsDeleted属性,这似乎是所有我可以find帮助)。

我需要删除它,因为为了解决一个破坏的信任关系,计算机被从域中分离出来(据推测会导致对象进入回收站,然后到LostAndFound容器),我们想给它的原始名称(基于PC上的资产标签号)。 尝试使用正确的名称将计算机重新join到域失败,并显示以下错误消息( The specified account does not exist

在这里输入图像描述

并尝试将其重命名为正确的名称,一旦它已经在域上失败,出现以下错误消息( The account already exists

在这里输入图像描述

所以实际的电脑当前坐在那里,名字不正确,我需要纠正。

但是,试图删除此AD对象会产生错误: The specified account does not exist 。 该对象的可分辨的名称中有一个\ (反斜杠)字符,我认为这是由于它在LostAndFound容器,我想知道如果这是问题…以及如何解决这个问题。 我正在运行我的shell作为domain admin ,validationdomain admins组是完全控制和所有权的对象的问题,似乎无法弄清楚这一个。

有问题的对象(有点修改):

 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 

我试过的东西似乎没有用,而且我尝试了很多。 在那张纸上,我试过了,下面。

首先,用一行普通的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 

然后,相同的事情,而不是引用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 

然后,首先将该值读入一个variables。 (试着用GUID和DN,只显示一个,因为它们产生相同的错误)。


 $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 

然后,我想我可以生活在不得不调用DSRM而不是本地做。


 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. 

然后我说地狱,让它可自动化,我只需右键单击并通过ADSIedit删除它 。

在这里输入图像描述


所以,最后,我正在吞噬我的骄傲,并在这里问。 我怎么能摆脱这个该死的东西? 它显然存在,它的存在正在造成问题,但我所有的尝试从Active Directory中删除它都会遇到谎言,该死的谎言和错误消息。


更新:

其他一些不起作用的,基于对ServerFaulters的评论,build议和讨论:

转义0 ,就好像\0代表一个空字节。


 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 

如DOS(用`n,`r,`n`r和`r`n尝试)转义整个\0A ,好像它是一个回车符或新行。 所有返回相同的错误,所以只显示一次。


 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 

逃避\0A作为饲料(是的,有点绝望)。


 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 

然后我想我应该确定是否这个字符甚至是问题所在,所以我在AD回收站中select了一个我不在乎的不同的对象,用\0Astring来试图吹掉它。 有效。


 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 

据我所说的微软支持工程师…和微软工程师,他把我升级到…和他们的经理,简单的回答是,摆脱这个被诅咒的对象的唯一方法是做一个权威性恢复到以前此对象在LostAndFound容器中的外观。 我相信我也可以通过将所有的域控制器启动到LiveCD并手动编辑AD数据库来摆脱它,但是,除了这两个非选项之外,我一直坚持下去。


至于如何和为什么是这样的情况:

我们运行了一个repadmin /showobjmeta对象(查看其元数据),并能够从对象的isDeleted版本( 2 )确定它已被删除,然后意外和不成功/部分恢复,这是什么原因造成的问题。 有人build议,在我看来,在对象恢复之后,但在变化完全复制之前,再次将其与其父OU一起删除,导致恢复失败,并导致它被认为是孤儿对象至less由我们的一些域控制器登陆到LostAndFound容器中。

作为部分恢复的结果,它不能被恢复。 由于对象的SAMAccountType为空 ,因此无法删除(或修改)。

SAMAccountType属性是任何用户都无法更改的值,并且尝试这样做会抛出以下错误:

在这里输入图像描述

 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 

我们无法恢复对象以使系统(安全帐户pipe理器)设置此属性,因为它处于部分还原状态,并且我们无法删除(或修改它),而没有该属性的有效值。


然而,由于这种情况对我来说太有意思了,所以我会徘徊一会儿,看看我能不能解决这个问题,或者至less扩展我对AD多一点尝试。 打败打印机故障排除…坦率地说,事实certificate,一台计算机告诉我“WILL_NOT_PERFORM”是一个我无法抗拒的挑战。

哦,是的,你会表演,该死!

根据这篇文章 ,您可能不得不尝试删除特定域控制器上的对象。 您可以尝试使用-Server参数运行Get-ADObject,以确定对象是否仅限于特定的DC。 然后,我会做同样的Remove-ADObject。

我有一个想法,可能看起来有点简单或不寻常,但如果我没有记错的话,这对过去的孤儿账户来说是有效的。 如果您可以确定确切的帐户名称,则您正在使用的系统正在查找,无论是用户帐户还是PC / Server帐户,都会尝试临时创build相同types和相同名称的帐户。 所以你基本上填补了空白,所以可以说,给系统正是它想要的。

因此,如果是PC /服务器帐户,请将一台机器以所需的确切名称连接回域名,但仅用于创build帐户。 或者,如果是用户帐户重新创build具有完全相同名称的用户帐户等。 您可能需要在命令提示符下运行命令gpupdate / f,以使服务器将新重新创build的帐户与孤立的OU重新连接。

然后继续尝试删除您最初想要删除的孤立的OU。 清除OU后,可以删除为此任务创build的帐户。

我希望这可以帮助你欢呼