Jak usunąć ten osierocony obiekt komputera usługi Active Directory (najlepiej za pomocą programu PowerShell)?


20

Pracuję ze stacji roboczej Windows 7 z PowerShell v2.0 i próbuję usunąć konkretny (osierocony?) Obiekt z LostAndFoundkontenera w lesie i domenie 2008 R2 FL z włączonym Koszem Active Directory i nie mam szczęścia z czymkolwiek .

Co ważne, muszę usunąć ten obiekt i tylko ten obiekt (zamiast usuwać każdy obiekt z IsDeletedwłaściwością, która wydaje się być wszystkim, na czym mogę znaleźć pomoc).

Muszę go usunąć, ponieważ aby rozwiązać zerwaną relację zaufania, komputer został odłączony od domeny (przypuszczalnie powodując przejście obiektu do Kosza, a następnie do LostAndFoundkontenera), i chcielibyśmy to dać oryginalna nazwa z powrotem (która jest oparta na numerze znacznika zasobu na komputerze). Próby ponownego przyłączenia komputera do domeny o poprawnej nazwie nie powiodły się z poniższym komunikatem o błędzie ( The specified account does not exist)

wprowadź opis zdjęcia tutaj

i próba zmiany nazwy na prawidłową nazwę, gdy jest już w domenie, kończy się niepowodzeniem z poniższym komunikatem o błędzie ( The account already exists)

wprowadź opis zdjęcia tutaj

tak więc rzeczywisty komputer PC ma obecnie niepoprawną nazwę, którą muszę poprawić.

Jednak próby usunięcia tego obiektu AD daje błąd: The specified account does not exist. Nazwa wyróżniająca obiektu zawiera znak \(odwrotny ukośnik), co, jak zakładam, wynika z tego, że znajduje się w LostAndFoundkontenerze, i zastanawiam się, czy to jest problem ... i jak to naprawić. Używam mojej powłoki jako domain admin, zweryfikowałem todomain admins grupa ma pełną kontrolę i własność przedmiotowego obiektu i po prostu nie mogę tego rozgryźć.

Przedmiotowy przedmiot (nieco zredagowany):

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

Wydaje mi się, że nic, co próbowałem, nie działa i dużo próbowałem. W tej notatce, co próbowałem poniżej.

Po pierwsze, za pomocą zwykłego jednego wiersza polecenia cmdlet programu 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

Następnie to samo, odwołując się do 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

Następnie najpierw wczytaj wartość do zmiennej. (Próbowałem z GUID i DN, pokazując tylko jeden, ponieważ dają ten sam błąd).


$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

Potem pomyślałem, że mogę żyć z koniecznością wywoływania DSRM zamiast robić to natywnie.


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.

Potem powiedziałem do piekła, że ​​jest to automatyczne, po prostu kliknę prawym przyciskiem myszy i usunę go za pomocą ADSIedit .

wprowadź opis zdjęcia tutaj


W końcu przełykam dumę i pytam tutaj. Jak, do diabła, pozbyłem się tego cholernego obiektu? Wyraźnie istnieje, a jego istnienie powoduje problemy, ale wszystkie moje próby usunięcia go z Active Directory spotykają się z kłamstwami, przeklętymi kłamstwami i komunikatami o błędach.


Aktualizacja:

Inne rzeczy, które nie działały, na podstawie komentarzy, sugestii i dyskusji z ServerFaulters:

Ucieczka 0, jakby \0reprezentował bajt zerowy.


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

Ucieczka od całości \0A, jakby to był powrót karetki lub nowa linia, jak w DOS (próbowano z `n,` r, `n`r i` r`n). Wszystkie zwróciły ten sam błąd, więc pokazano tylko raz.


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

Ucieczka z \0Apliku danych (tak, trochę desperacja).


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

Potem pomyślałem, że powinienem ustalić, czy \0Apostać stanowi nawet problem, więc wybrałem inny przedmiot, na którym mi nie zależało, w Koszu AD z \0Ałańcuchem i próbowałem go zdmuchnąć. Zadziałało.


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
Pytania dotyczące błędu serwera muszą wykazać się minimalnym zrozumieniem danej technologii. W przeciwnym razie post często zamienia się w forum dyskusyjne zamiast prostych pytań i odpowiedzi. Najlepszą radą, jaką możemy Ci dać, jest zatrudnienie konsultanta, który pomoże ci lub przeprowadzi dalsze badania w zakresie podstaw tej technologii.
TheCleaner

Czy $C = Get-ADObject -Filter { Name -Like '*DEL:*' }zwraca tylko twoją sierotę? Jeśli tak, zrób Remove-ADObject -Identity $C.DistinguishedNameTo \0jest terminatorem zerowym.
Ryan Ries

@RyanRies Zwraca tylko mój obiekt, ale uruchomienie powoduje również zwrócenie tego samego The specified account does not existbłędu. Dla tego, co jest warte, próbowałem również traktować ten \0bajt zerowy (i ucieczkę od niego), a także traktować \A0jako powrót karetki / przerwanie linii (jak to jest w DOS), również bez radości. Różne próby zgadywania i ucieczki \A0bohaterów spotkały się z The object name has bad syntaxi Directory object not found. :(
HopelessN00b

Bummer ... '*CNF:*'Cały czas używam tej techniki na obiektach rozwiązywania konfliktów ( ) i działa ona doskonale.
Ryan Ries

Odpowiedzi:


3

Według inżyniera wsparcia Microsoft, z którym rozmawiałem ... i inżyniera Microsoftu, do którego eskalował mnie ... i ich menedżera, krótka odpowiedź jest taka, że ​​jedynym sposobem na pozbycie się tego przeklętego obiektu jest autorytatywne przywrócenie wcześniej wygląd tego obiektu w LostAndFoundpojemniku. Jestem przekonany, że mógłbym się go również pozbyć, uruchamiając wszystkie kontrolery domeny na LiveCD i ręcznie edytując bazę danych AD, ale brakuje mi tych dwóch innych opcji, utknąłem przy tym.


Co do tego, jak i dlaczego tak jest:

Uruchomiliśmy obiekt repadmin /showobjmetaprzeciw (aby zajrzeć do jego metadanych) i na podstawie wersji obiektu isDeleted( 2) mogliśmy ustalić , że został on usunięty, a następnie niespodziewanie i częściowo / nie przywrócony, co jest przyczyną problemu. Zasugerowano i wydaje mi się prawdopodobne, że po przywróceniu obiektu, ale przed całkowitą replikacją zmiany, została ona ponownie usunięta wraz z nadrzędną jednostką organizacyjną, co spowodowało niepowodzenie przywracania i spowodowało, że uznano ją za osieroconą sprzeciwić się przynajmniej niektórym z naszych kontrolerów domeny, lądując w LostAndFoundkontenerze.

W wyniku częściowego przywracania nie można go przywrócić. Ponieważ obiekt SAMAccountTypejest pusty , nie można go usunąć (ani zmodyfikować).

SAMAccountTypeAtrybutem jest wartość, która nie może być zmieniany przez każdego użytkownika i stara się zrobić tak rzuca poniżej błędu:

wprowadź opis zdjęcia tutaj

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

Nie możemy przywrócić obiektu, aby system (Menedżer kont zabezpieczeń) ustawił ten atrybut z powodu częściowo przywróconego stanu, w którym się znajduje, i nie możemy go usunąć (ani zmodyfikować) bez prawidłowej wartości tego atrybutu.


Ponieważ jednak jest to zbyt interesujący przypadek, abym mógł po prostu odejść, zacznę się przez chwilę rozglądać i sprawdzić, czy nie mogę wymyślić sposobu na obejście tego, a przynajmniej poszerzyć swoją wiedzę na temat AD przy próbie trochę więcej. Pokonuje rozwiązywanie problemów z drukarkami ... i szczerze mówiąc, okazuje się, że komputer mówi mi „WILL_NOT_PERFORM” to wyzwanie, któremu nie mogę się oprzeć.

O tak, zagracie, cholera!


1

Na podstawie tego postu może być konieczne usunięcie obiektu na określonych kontrolerach domeny. Możesz spróbować uruchomić Get-ADObject z parametrem -Server, aby ustalić, czy obiekt jest ograniczony do określonych kontrolerów domeny. Potem zrobiłbym to samo z Remove-ADObject.


Nie wydaje się to stanowić problemu, ponieważ oba kontrolery domeny w mojej witrynie zawierają obiekt, a replikacja nuci długo, ale nigdy nie zaszkodzi przeprowadzić dokładnej repadmindiagnostyki (którą uruchomiłem, odkąd straciłem nadzieję na jest to problem z nazwą obiektu), więc dobra odpowiedź ... po prostu raczej nie będzie tutaj odpowiedzią. Kiedy diagi się zakończą, zaktualizuję swój post.
HopelessN00b

W każdym razie wydawało się to rozsądnym krokiem do rozwiązania problemu. Dziękuję za głosowanie w górę.
Tim Ferrill

0

Mam pomysł, który może po prostu zadziałać, może wydawać się nieco prosty lub nietypowy, ale jeśli dobrze pamiętam, działało to dla mnie w przeszłości z osieroconymi kontami. Jeśli możesz określić dokładną nazwę konta, system, nad którym pracujesz, czy to konto użytkownika, czy konto PC / serwera, spróbuj tymczasowo utworzyć konto tego samego typu i tej samej nazwy. Więc zasadniczo wypełniasz puste pola, że ​​tak powiem i dajesz systemowi dokładnie to, czego chce.

Jeśli więc jest to konto PC / serwera, poproś komputer o ponowne przyłączenie się do domeny o dokładnie takiej nazwie, jakiej szuka, ale tylko w celu utworzenia konta. Lub jeśli jest to konto użytkownika, utwórz ponownie konto użytkownika o takiej samej nazwie itp. może być konieczne uruchomienie polecenia gpupdate / f w wierszu polecenia, aby serwer ponownie połączył nowo utworzone konto z osieroconą jednostką organizacyjną.

Następnie kontynuuj próbę usunięcia osieroconej jednostki organizacyjnej, którą pierwotnie chcesz usunąć. Po oczyszczeniu jednostki organizacyjnej możesz usunąć konto utworzone dla tego zadania.

Mam nadzieję, że to ci pomoże

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.