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


20

我正在使用带有PowerShell v2.0的Windows 7工作站进行工作,并尝试从启用LostAndFoundActive Directory回收站的2008 R2 FL林和域中的容器中删除特定(孤立的)对象,但没有运气用什么

重要的是,我需要删除该对象,并且删除该对象(而不是删除具有该IsDeleted属性的每个对象,这似乎是我可以找到的全部帮助)。

我需要删除它,因为为了解决断开的信任关系,计算机已与域断开连接(大概是导致对象先进入回收站,然后再进入LostAndFound容器),并且我们想给它其原始名称返回(基于PC上的资产标签号)。尝试将计算机重新加入具有正确名称的域失败,并显示以下错误消息(The specified account does not exist

在此处输入图片说明

并尝试将其重命名为正确的名称后,该操作失败,并显示以下错误消息(The account already exists

在此处输入图片说明

因此实际的PC当前坐在那里的名称不正确,我需要纠正该名称。

但是,尝试删除此AD对象会产生错误:The specified account does not exist。该对象的可分辨名称中包含一个\(反斜杠)字符,我认为这是由于它位于LostAndFound容器中,我想知道这是否是问题所在……以及如何修复它。我将外壳程序运行为domain admin,验证了该domain 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

然后,首先将值读入变量。(尝试使用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的评论,建议和讨论,其他无效的事情:

转义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

转义整个字符\0A,就像是回车符或换行符一样,就像在DOS中一样(尝试使用`n,`r,`n`r和`r`n)。全部返回相同的错误,因此仅显示一次。


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=SomeComputerDEL:...MyEmployer,DC=prv:ADObject) [Get-ADObject], ADIdentityNotFoundException
    + FullyQualifiedErrorId : Directory object not found,Microsoft.ActiveDirectory.Management.Commands.GetADObject

然后,我想出了应该确定该 \0A字符是否是问题所在,因此我在广告回收站中选择了一个我不关心的对象,并在其中插入了\0A字符串,并试图将其吹走。有效。


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


4
有关服务器故障的问题必须证明对有关技术的最低理解。 否则,该帖子通常会变成讨论论坛,而不是直接的问答环节。我们可以为您提供的最佳建议是聘请顾问来帮助您或对该技术的基础进行进一步的研究。
TheCleaner 2014年

是否$C = Get-ADObject -Filter { Name -Like '*DEL:*' }只返回你的孤儿?如果是这样,Remove-ADObject -Identity $C.DistinguishedName那那\0是一个空终止符。
瑞安·里斯

@RyanRies它确实只返回我的对象​​,但是运行时也返回相同的The specified account does not exist错误。对于它的价值,我也尝试将其\0视为空字节(并转义),以及将其\A0视为回车/换行符(与DOS中一样),也没有任何乐趣。在猜测和逃避各种尝试\A0人物遭到了The object name has bad syntaxDirectory object not found。:(
HopelessN00b 2014年

糟糕...我一直在解决冲突的对象('*CNF:*')上使用该技术,并且效果很好。
瑞安·里斯

Answers:


3

根据与我交谈过的Microsoft支持工程师的介绍...以及他将我升级为...和他们的经理的Microsoft工程师,简短的回答是,摆脱此被诅咒对象的唯一方法是进行权威还原该对象在LostAndFound容器中的外观。我相信我也可以通过将所有域控制器引导到LiveCD并手动编辑AD数据库来摆脱它,但是除了这两个非选项之外,我坚持使用它。


关于这种情况的方式和原因:

我们repadmin /showobjmeta针对该对象进行了测试(以查看其元数据),并能够从该对象的isDeleted版本(2)中确定该对象已被删除,然后意外地,不成功地/部分地还原了它,这就是问题所在。有人建议,并且在我看来,是在还原对象之后,但是在更改完全复制之前,它又连同其父OU一起被再次删除,导致还原失败,并被认为是孤立的至少由我们的某些域控制器提供对象,将其放置在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

由于对象处于部分还原的状态,因此我们无法还原该对象以使系统(安全帐户管理器)设置该属性,并且在没有该属性的有效值的情况下也无法删除(或修改)该对象。


但是,由于这种情况对于我来说太有趣了,所以我不能简单地走开,所以我将闲逛一会儿,看看是否无法找到解决方法,或者至少是扩展我的知识AD尝试更多。击败了对打印机进行故障排除的工作……坦白地说,事实证明,一台告诉我“ WILL_NOT_PERFORM”的计算机是我无法抗拒的挑战。

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


1

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


这似乎不是问题所在,因为我站点上的两个DC都包含该对象,并且复制已经适当地耗费了很长的时间,但是进行彻底的repadmin诊断从来没有什么坏处(自从我失去了对它的希望以来,我就一直在运行它)这是对象名称的问题),很好的答案……只是在这里不太可能成为答案。诊断完成后,我将更新我的帖子。
HopelessN00b 2014年

无论如何,这似乎是一个合理的故障排除步骤。感谢您的投票。
蒂姆·费里尔

0

我有一个想法,那就是可行,它看起来有点简单或与众不同,但如果我没记错的话,过去使用孤立帐户对我来说是可行的。如果您可以确定确切的帐户名,则正在使用的系统正在寻找用户帐户或PC / Server帐户,请尝试临时创建相同类型和相同名称的帐户。因此,您实质上是在填补空白,可以这么说并为系统提供所需的功能。

因此,如果它是PC /服务器帐户,则将一台机器加入其所要查找的确切名称的域中,但这仅是为了创建该帐户。或者,如果是用户帐户,请使用完全相同的名称等重新创建该用户帐户。您可能需要在命令提示符下运行命令gpupdate / f,以使服务器将新重新创建的帐户与孤立的OU重新连接。

然后继续尝试删除您最初要删除的孤立OU。清理完OU后,即可删除为此任务创建的帐户。

我希望这可以帮助您加油

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.