Bagaimana cara menghapus objek komputer Active Directory yatim piatu ini (lebih disukai dengan PowerShell)?

20

Saya bekerja dari workstation Windows 7, dengan PowerShell v2.0, dan mencoba untuk menghapus objek (yatim?) Tertentu dari LostAndFoundwadah di hutan 2008 R2 FL dan domain dengan Active Recycle Bin direktori diaktifkan, dan tidak memiliki keberuntungan dengan apa pun .

Yang penting, saya perlu menghapus objek ini, dan objek ini saja (daripada menghapus setiap objek dengan IsDeletedproperti, yang tampaknya menjadi satu-satunya yang dapat saya temukan bantuannya).

Saya perlu menghapusnya, karena untuk menyelesaikan hubungan kepercayaan yang rusak, komputer dipisahkan dari domain (mungkin menyebabkan objek untuk pergi ke Keranjang Sampah, dan kemudian ke LostAndFoundwadah), dan kami ingin memberikannya nama aslinya kembali (yang didasarkan pada nomor tag aset pada PC). Mencoba bergabung kembali dengan komputer ke domain dengan nama yang benar gagal dengan pesan kesalahan di bawah ini ( The specified account does not exist)

masukkan deskripsi gambar di sini

dan mencoba mengubah nama menjadi nama yang benar setelah itu sudah ada di domain gagal dengan pesan kesalahan di bawah ini ( The account already exists)

masukkan deskripsi gambar di sini

jadi PC yang sebenarnya saat ini duduk di sana dengan nama yang salah, yang perlu saya koreksi.

Namun, mencoba untuk menghapus objek AD ini menghasilkan kesalahan: The specified account does not exist. Nama objek yang dibedakan memiliki karakter \(garis miring terbalik) di dalamnya, yang saya asumsikan karena berada di dalam LostAndFoundwadah, dan saya bertanya-tanya apakah itu masalahnya ... dan bagaimana cara memperbaikinya. Saya menjalankan shell saya sebagai domain admin, memverifikasi bahwa domain adminsgrup memiliki kontrol penuh dan kepemilikan objek yang bersangkutan, dan sepertinya tidak dapat menemukan yang ini.

Objek yang dimaksud (agak dihapus):

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

Tidak ada yang saya coba tampaknya berhasil, dan saya sudah mencoba banyak. Pada catatan itu, apa yang saya coba, di bawah.

Pertama, dengan cmdlet PowerShell polos, satu baris:


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

Kemudian, hal yang sama, merujuk pada 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

Lalu, baca nilainya menjadi variabel terlebih dahulu. (Dicoba dengan GUID dan DN, hanya menunjukkan satu, karena mereka menghasilkan kesalahan yang sama).


$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

Kemudian saya pikir saya bisa hidup dengan harus memanggil DSRM daripada melakukannya secara asli.


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.

Lalu saya berkata sangat keras dengan membuatnya otomatis, saya hanya akan klik kanan dan menghapusnya melalui ADSIedit .

masukkan deskripsi gambar di sini


Jadi, akhirnya, aku menelan harga diriku dan bertanya di sini. Bagaimana saya bisa menyingkirkan benda sialan ini? Jelas ada, dan keberadaannya menyebabkan masalah, namun semua upaya saya untuk menghapusnya dari Active Directory bertemu dengan kebohongan, kebohongan terkutuk dan pesan kesalahan.


Memperbarui:

Hal-hal lain yang tidak berfungsi, berdasarkan komentar, saran dan diskusi dengan ServerFaulters:

Melewati 0, seolah-olah \0mewakili byte nol.


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

Lolos dari keseluruhan \0A, seolah-olah itu carriage return atau baris baru, seperti pada DOS (dicoba dengan `n,` r, `n`r dan` r`n). Semua mengembalikan kesalahan yang sama, jadi hanya ditampilkan sekali.


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

Melarikan diri \0Asebagai umpan formulir (ya, semakin putus asa).


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

Kemudian saya pikir saya harus menentukan apakah \0Akarakter itu bahkan masalahnya, jadi saya memilih objek yang berbeda yang tidak saya pedulikan di AD Recycle Bin dengan \0Astring di dalamnya dan mencoba meledakkannya. Itu berhasil.


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
sumber
4
Pertanyaan tentang Kesalahan Server harus menunjukkan pemahaman minimum teknologi yang dimaksud. Kalau tidak, pos tersebut sering berubah menjadi forum diskusi , alih-alih langsung tanya jawab. Saran terbaik yang dapat kami berikan adalah menyewa konsultan untuk membantu Anda atau melakukan penelitian lebih lanjut tentang dasar-dasar teknologi ini.
TheCleaner
Apakah $C = Get-ADObject -Filter { Name -Like '*DEL:*' }hanya mengembalikan anak yatim Anda? Jika demikian, lakukan Remove-ADObject -Identity $C.DistinguishedNameItu \0adalah terminator nol.
Ryan Ries
@RyanRies Hanya mengembalikan objek saya, tetapi menjalankannya juga mengembalikan The specified account does not existkesalahan yang sama . Untuk apa nilainya, saya juga mencoba memperlakukan \0sebagai byte nol (dan menghindarinya), serta memperlakukan \A0sebagai carriage return / line break (seperti di DOS), juga tanpa sukacita. Berbagai upaya menebak dan melarikan diri \A0karakter telah dipenuhi The object name has bad syntaxdan Directory object not found. :(
HopelessN00b
Nyebelin ... Saya menggunakan teknik itu pada objek resolusi konflik ( '*CNF:*') sepanjang waktu dan berfungsi dengan baik.
Ryan Ries

Jawaban:

3

Menurut insinyur pendukung Microsoft yang saya ajak bicara ... dan insinyur Microsoft yang ia tingkatkan untuk saya ... dan manajer mereka, jawaban singkatnya adalah satu-satunya cara untuk membebaskan diri dari objek terkutuk ini adalah dengan melakukan pengembalian otoritatif sebelum penampilan objek ini dalam LostAndFoundwadah. Saya yakin saya juga bisa membebaskan diri dari itu dengan mem-boot semua pengontrol domain ke LiveCD dan secara manual mengedit database AD, tetapi singkat dari kedua non-opsi, saya terjebak dengannya.


Tentang bagaimana dan mengapa hal ini terjadi:

Kami berlari repadmin /showobjmetamelawan objek (untuk mengintip metadata-nya) dan dapat menentukan dari isDeletedversi objek ( 2) bahwa itu dihapus, kemudian secara tak terduga dan tidak berhasil / sebagian dipulihkan, yang merupakan penyebab masalah. Disarankan, dan tampaknya bagi saya, bahwa setelah objek dipulihkan, tetapi sebelum perubahan telah sepenuhnya direplikasi, itu dihapus lagi, bersama dengan induknya OU, menyebabkan pengembalian gagal, dan mengakibatkannya dianggap sebagai yatim piatu. objek dengan setidaknya beberapa pengontrol domain kami, mendarat di LostAndFoundwadah.

Sebagai hasil dari pemulihan parsial, itu tidak dapat dikembalikan. Sebagai hasil dari objek SAMAccountTypeyang kosong , itu tidak dapat dihapus (atau dimodifikasi).

The SAMAccountTypeatribut adalah nilai yang tidak dapat diubah oleh setiap pengguna, dan mencoba untuk melakukannya melempar kesalahan di bawah ini:

masukkan deskripsi gambar di sini

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

Kami tidak dapat memulihkan objek untuk mendapatkan sistem (Security Accounts Manager) untuk mengatur atribut ini karena keadaan yang sebagian dipulihkan, dan kami tidak dapat menghapusnya (atau memodifikasinya) tanpa nilai yang valid untuk atribut tersebut.


Namun, karena ini adalah kasus yang terlalu menarik bagi saya untuk dijauhi, saya akan melihat-lihat sebentar dan melihat apakah saya tidak dapat menemukan jalan keluarnya, atau setidaknya memperluas pengetahuan saya tentang AD sedikit lagi dalam upaya. Mengalahkan printer pemecahan masalah ... dan terus terang, ternyata komputer yang memberi tahu saya "WILL_NOT_PERFORM" adalah tantangan yang tidak bisa saya tolak.

Oh ya Anda akan tampil, sial!

HopelessN00b
sumber
1

Berdasarkan posting ini , Anda mungkin harus mencoba menghapus objek pada pengontrol domain tertentu. Anda dapat mencoba menjalankan Get-ADObject dengan parameter -Server untuk menentukan apakah objek terbatas pada DC tertentu. Lalu saya akan melakukan hal yang sama dengan Remove-ADObject.

Tim Ferrill
sumber
Itu tampaknya tidak menjadi masalah, karena kedua DC di situs saya memang mengandung objek, dan replikasi bersenandung lama dengan benar, tetapi tidak ada salahnya untuk melakukan repadmindiagnosa menyeluruh (yang telah saya jalankan sejak kehilangan harapan itu menjadi masalah dengan nama objek), jawaban yang sangat bagus ... sepertinya tidak akan menjadi jawaban di sini. Ketika diags selesai, saya akan memperbarui posting saya.
HopelessN00b
Tampak seperti langkah pemecahan masalah yang masuk akal. Terima kasih atas suaranya.
Tim Ferrill
0

Saya punya ide yang mungkin berhasil, mungkin terlihat agak sederhana atau di luar kebiasaan, tetapi jika saya ingat dengan benar ini telah berhasil bagi saya di masa lalu dengan akun yatim. Jika Anda dapat menentukan nama akun yang tepat, sistem yang sedang Anda cari sedang mencari, baik itu akun pengguna atau akun PC / Server, cobalah untuk sementara membuat akun dengan tipe dan nama yang sama. Jadi pada dasarnya Anda mengisi bagian yang kosong, sehingga untuk berbicara dan memberikan sistem persis apa yang diinginkannya.

Jadi jika itu adalah akun PC / server, mintalah mesin bergabung kembali ke domain dengan nama persis yang dicari, tetapi hanya untuk tujuan membuat akun. Atau jika itu adalah akun pengguna buat ulang akun pengguna dengan nama yang sama persis, dll. Anda mungkin perlu menjalankan perintah gpupdate / f di command prompt untuk mendapatkan server untuk menghubungkan kembali akun yang baru dibuat kembali dengan OU yatim.

Kemudian lanjutkan dengan mencoba menghapus OU yatim yang Anda ingin hapus. Setelah OU dibersihkan, Anda dapat menghapus akun yang Anda buat untuk tugas ini.

Saya harap ini membantu Anda bersorak

Frank R
sumber