LostAndFound
我在 Windows 7 工作站上使用 PowerShell v2.0 进行工作,并尝试从 2008 R2 FL 林和域中的容器中删除特定(孤立?)对象Active Directory 回收站启用,但没有运气任何事物。
重要的是,我需要删除这个对象,并且仅限此对象(而不是删除具有该IsDeleted
属性的每个对象,这似乎是我能找到的全部帮助)。
我需要删除它,因为为了解决中断的信任关系,计算机已脱离域(可能导致对象进入回收站,然后进入容器LostAndFound
),我们想将其恢复为原始名称(基于 PC 上的资产标签号)。尝试使用正确的名称将计算机重新加入域失败,并显示以下错误消息(The specified account does not exist
)
并且尝试将其重命名为正确的名称(一旦它已经在域中)失败,并显示以下错误消息(The account already exists
)
因此实际的 PC 目前的名称不正确,我需要纠正。
但是,尝试删除此 AD 对象会产生错误:The specified account does not exist
。对象的可分辨名称\
中有一个 (反斜杠) 字符,我认为这是由于它在容器中LostAndFound
,我想知道这是否是问题所在……以及如何修复它。我以 的身份运行我的 shell 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=SomeComputer♀DEL:...MyEmployer,DC=prv:ADObject) [Get-ADObject], ADIdentityNotFoundException
+ FullyQualifiedErrorId : Directory object not found,Microsoft.ActiveDirectory.Management.Commands.GetADObject
然后我想我应该确定一下 \0A
字符是否是问题所在,所以我在 AD 回收站中挑选了一个我不关心的带有字符串的其他对象\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
答案1
根据我与之交谈过的微软支持工程师……以及他向我上报的微软工程师……以及他们的经理的说法,简而言之,摆脱这个可恶的对象的唯一方法是进行权威性恢复,恢复到该对象出现在容器中之前的状态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 的了解。这比排除打印机故障要好……坦率地说,事实证明,计算机告诉我“无法执行”是一个我无法抗拒的挑战。
噢,是的,你会表演的,该死的!
答案2
基于这个帖子,您可能必须尝试删除特定域控制器上的对象。您可以尝试使用 -Server 参数运行 Get-ADObject,以确定对象是否仅限于特定 DC。然后我会对 Remove-ADObject 执行相同的操作。
答案3
我有一个可能行得通的想法,它可能看起来有点简单或不寻常,但如果我记得正确的话,过去这种方法对孤立帐户很有效。如果您可以确定您正在使用的系统正在寻找的确切帐户名称,无论是用户帐户还是 PC/服务器帐户,请尝试临时创建一个相同类型和相同名称的帐户。因此,您实际上是在填补空白,可以这么说,并向系统提供它想要的东西。
因此,如果是 PC/服务器帐户,请让一台机器以其所需的确切名称重新加入域,但目的仅限于创建帐户。或者,如果是用户帐户,请重新创建具有完全相同名称的用户帐户等。您可能需要在命令提示符中运行命令 gpupdate /f,以使服务器将新创建的帐户与孤立的 OU 重新连接。
然后继续尝试删除您最初想要删除的孤立 OU。清理完 OU 后,您就可以删除为此任务创建的帐户了。
我希望这能帮助你欢呼