Как удалить этот потерянный компьютерный объект Active Directory (желательно с PowerShell)?

20

Я работаю с рабочей станции Windows 7 с PowerShell v2.0 и пытаюсь удалить определенный (потерянный?) Объект из LostAndFoundконтейнера в лесе FL R2 и домене с включенной корзиной Active Directory , но мне не повезло с чем угодно .

Важно отметить, что мне нужно удалить этот объект и только этот объект (вместо того, чтобы удалять каждый объект со IsDeletedсвойством, что, похоже, является единственной возможностью найти справку).

Мне нужно удалить его, потому что для устранения разорванных доверительных отношений компьютер был отключен от домена (возможно, из-за этого объект переместился в корзину, а затем в LostAndFoundконтейнер), и мы хотели бы предоставить его его первоначальное имя обратно (которое основано на номере тега актива на ПК). Попытки присоединить компьютер к домену с правильным именем потерпели неудачу с приведенным ниже сообщением об ошибке ( The specified account does not exist)

введите описание изображения здесь

и попытка переименовать его в правильное имя, как только он уже находится в домене, завершается неудачей с сообщением об ошибке ниже ( The account already exists)

введите описание изображения здесь

таким образом, настоящий компьютер в настоящее время сидит там с неправильным именем, которое мне нужно исправить.

Однако, при попытке удалить этот объект 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:


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была ли проблема даже у персонажа, поэтому я выбрал в корзине 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

HopelessN00b
источник
4
Вопросы о сбое сервера должны демонстрировать минимальное понимание рассматриваемой технологии. В противном случае сообщение часто превращается в дискуссионный форум , а не в прямые вопросы и ответы. Лучший совет, который мы можем вам дать, это нанять консультанта, который поможет вам или проведет дальнейшие исследования основ этой технологии.
TheCleaner
$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 syntaxи Directory object not found. :(
HopelessN00b
Облом ... Я использую эту технику на объектах разрешения конфликтов ( '*CNF:*') все время, и она отлично работает.
Райан Райс

Ответы:

3

По словам инженера службы поддержки Microsoft, с которым я разговаривал ... и инженера Microsoft, с которым он меня перевел ... и их менеджера, краткий ответ заключается в том, что единственный способ избавиться от этого проклятого объекта - это сделать принудительное восстановление до того, как появление этого объекта в LostAndFoundконтейнере. Я убежден, что мог бы также избавиться от этого, загрузив все контроллеры домена с LiveCD и вручную отредактировав базу данных AD, но если не считать этих двух вариантов, я застрял с этим.


Что касается того, как и почему это так:

Мы запустили repadmin /showobjmetaобъект (чтобы посмотреть его метаданные) и смогли определить из версии объекта isDeleted( 2), что он был удален, а затем неожиданно и неудачно / частично восстановлен, что и является причиной проблемы. Было высказано предположение, и мне кажется, что после того, как объект был восстановлен, но до того, как изменение полностью реплицировалось, он снова был удален вместе со своим родительским подразделением, что привело к сбою восстановления, в результате чего он был признан потерянным возражать, по крайней мере, некоторым из наших контроллеров домена, посадив его в 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", является проблемой, которую я не могу устоять.

О да, ты будешь выступать, черт побери!

HopelessN00b
источник
1

Исходя из этого поста , вам может потребоваться попытаться удалить объект на определенных контроллерах домена. Вы можете попробовать запустить Get-ADObject с параметром -Server, чтобы определить, ограничен ли объект конкретными контроллерами домена. Тогда я бы сделал то же самое с Remove-ADObject.

Тим Феррилл
источник
Похоже, это не проблема, так как оба контроллера домена на моем сайте содержат объект, и репликация долго гудит, но никогда не помешает провести тщательную repadminдиагностику (которой я руководил с тех пор, как потерял надежду на это проблема с именем объекта), так что хороший ответ ... просто вряд ли ответ здесь. Когда завершатся наброски, я обновлю свой пост.
HopelessN00b
В любом случае это казалось разумным шагом по устранению неполадок. Спасибо за голосование.
Тим Феррилл
0

У меня есть идея, которая может сработать, она может показаться немного простой или необычной, но если я правильно помню, это работало для меня в прошлом с осиротевшими аккаунтами. Если вы можете определить точное имя учетной записи, которую ищет система, над которой вы работаете, будь то учетная запись пользователя или учетная запись ПК / сервера, попробуйте временно создать учетную запись того же типа и с тем же именем. Таким образом, вы, по сути, заполняете пробелы, так сказать, и даете системе именно то, что она хочет.

Поэтому, если это учетная запись ПК / сервера, подключите компьютер к домену с точным именем, которое он ищет, но только для создания учетной записи. Или, если это учетная запись пользователя, воссоздайте учетную запись пользователя с точно таким же именем и т. Д. вам может потребоваться выполнить команду gpupdate / f в командной строке, чтобы сервер переподключил вновь созданную учетную запись с потерянным подразделением.

Затем попытайтесь удалить осиротевшее подразделение, которое вы изначально хотели удалить. После очистки подразделения вы можете удалить учетную запись, созданную для этой задачи.

Я надеюсь, что это поможет вам ура

Фрэнк Р
источник