이 분리 된 Active Directory 컴퓨터 개체를 삭제하려면 어떻게합니까?


20

PowerShell v2.0이 설치된 Windows 7 워크 스테이션에서 작업 LostAndFound하고 있으며 Active 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을 호출 해야 한다는 것을 알았 습니다.


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마치 \0null 바이트를 나타내는 것처럼을 이스케이프 처리합니다 .


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

\0ADOS 에서처럼 캐리지 리턴이나 줄 바꿈처럼 전체를 이스케이프 처리합니다 (`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캐릭터가 문제 인지 여부를 결정해야한다고 생각 했기 때문에 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


4
서버 결함에 대한 질문은 해당 기술에 대한 최소한의 이해를 보여 주어야합니다. 그렇지 않으면 게시물이 종종 Q & A 대신 토론 포럼으로 바뀝니다 . 우리가 제공 할 수있는 최선의 조언은 컨설턴트를 고용하여이 기술의 기본 사항에 대한 추가 연구를하도록 도와주는 것입니다.
TheCleaner

$C = Get-ADObject -Filter { Name -Like '*DEL:*' }고아 만 반환 합니까 ? 그렇다면, 어떻게 Remove-ADObject -Identity $C.DistinguishedName\0널 터미네이터이다.
Ryan Ries

@RyanRies 내 개체 만 반환하지만 실행하면 동일한 The specified account does not exist오류가 반환 됩니다. 가치있는 것을 위해, 나는 또한 기쁨없이 캐리지 리턴 / 줄 바꿈 (DOS \0와 마찬가지로)을 null 바이트로 취급 하고 탈출 하려고 시도 \A0했습니다. 추측과 탈출에서 다양한 시도를 \A0문자로 충족 The object name has bad syntax하고 Directory object not found. :(
HopelessN00b

Bummer ... 충돌 해결 개체 ( '*CNF:*') 에서이 기술을 항상 사용하며 완벽하게 작동합니다.
Ryan Ries

답변:


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

시스템이 부분적으로 복원 된 상태로 인해이 속성을 설정하도록 시스템 (Security Accounts Manager)을 가져 오도록 오브젝트를 복원 할 수 없으며 해당 속성에 유효한 값이 없으면 오브젝트를 삭제 (또는 수정) 할 수 없습니다.


그러나 이것은 내가 단순히 떠나기에는 너무 흥미 롭기 때문에 잠시 동안 찌르고이 문제를 해결할 수 없거나 적어도 내 지식을 넓힐 수 있는지 봅니다. AD는 시도에서 조금 더. 프린터 문제 해결을 능가합니다 ... 솔직히, "WILL_NOT_PERFORM"이라고 말하는 컴퓨터는 내가 견딜 수없는 도전입니다.

오 예 당신은 수행합니다, 젠장!


1

이 게시물을 기반으로 특정 도메인 컨트롤러에서 개체를 삭제해야 할 수도 있습니다. 개체가 특정 DC로 제한되어 있는지 확인하기 위해 -Server 매개 변수를 사용하여 Get-ADObject를 실행 해 볼 수 있습니다. 그런 다음 Remove-ADObject와 동일한 작업을 수행합니다.


내 사이트의 DC 두 개 모두 개체를 포함하고 복제가 오랫동안 윙윙 거리기 때문에 문제가되지는 않지만 철저한 repadmin진단 을 수행하는 데 결코 아프지 않습니다. 그것은 객체 이름에 문제가 있습니다), 그래서 좋은 대답은 ... 대답이 아닐 것입니다. 진단이 완료되면 게시물을 업데이트합니다.
HopelessN00b

어쨌든 합리적인 문제 해결 단계처럼 보였습니다. 투표 해 주셔서 감사합니다.
팀 페릴

0

나는 그것이 효과가있을 수도 있다는 생각을 가지고 있습니다. 약간 단순하거나 평범하지 않은 것처럼 보일 수도 있지만, 올바르게 기억한다면 과거에 고아 계정으로 저에게 효과적이었습니다. 정확한 계정 이름을 결정할 수있는 경우 작업중인 시스템이 사용자 계정 또는 PC / 서버 계정인지 확인하고 동일한 유형과 동일한 이름의 계정을 임시로 만드십시오. 따라서 본질적으로 블랭크를 채우므로 시스템이 원하는 것을 정확하게 말하고 제공합니다.

따라서 PC / 서버 계정 인 경우 컴퓨터가 원하는 정확한 이름으로 계정을 다시 만들도록 도메인에 다시 가입시킵니다. 또는 사용자 계정 인 경우 정확히 같은 이름으로 사용자 계정을 다시 만드십시오. 서버가 새로 만든 계정을 고아 OU에 다시 연결하려면 명령 프롬프트에서 gpupdate / f 명령을 실행해야 할 수 있습니다.

그런 다음 원래 삭제하려는 분리 된 OU를 삭제하십시오. OU를 정리하면이 작업을 위해 만든 계정을 삭제할 수 있습니다.

나는 이것이 당신을 응원하는 데 도움이되기를 바랍니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.