Come posso eliminare questo oggetto orfano di computer Active Directory (preferibilmente con PowerShell)?


20

Sto lavorando da una workstation Windows 7, con PowerShell v2.0, e sto provando a eliminare un oggetto particolare (orfano?) Dal LostAndFoundcontenitore in una foresta e dominio FL di R2 R2 2008 con il Cestino di Active Directory abilitato e non ho fortuna con qualsiasi cosa .

È importante sottolineare che devo eliminare questo oggetto e solo questo oggetto (piuttosto che eliminare ogni oggetto con la IsDeletedproprietà, che sembra essere tutto ciò su cui riesco a trovare aiuto).

Devo eliminarlo, perché per risolvere una relazione di trust interrotta, il computer è stato slegato dal dominio (presumibilmente facendo sì che l'oggetto andasse nel Cestino, quindi nel LostAndFoundcontenitore) e vorremmo darlo il suo nome originale indietro (che si basa sul numero di tag del bene sul PC). Tentativi di ricollegare il computer al dominio con il nome corretto non riusciti con il seguente messaggio di errore ( The specified account does not exist)

inserisci qui la descrizione dell'immagine

e tentare di rinominarlo con il nome corretto una volta che è già sul dominio non riesce con il seguente messaggio di errore ( The account already exists)

inserisci qui la descrizione dell'immagine

quindi il PC attuale è attualmente seduto lì con un nome errato, che devo correggere.

Tuttavia, il tentativo di eliminare questo oggetto AD produce l'errore: The specified account does not exist. Il nome distinto dell'oggetto ha un carattere \(barra rovesciata), che presumo sia dovuto al fatto che si trova nel LostAndFoundcontenitore, e mi chiedo se sia questo il problema ... e come risolverlo. Sto eseguendo la mia shell come un domain admin, verificato che il domain adminsgruppo abbia il pieno controllo e la proprietà dell'oggetto in questione, e non riesco proprio a capirlo.

L'oggetto in questione (in qualche modo redatto):

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

Nulla di ciò che ho provato sembra funzionare, e ho provato molto. In quella nota, quello che ho provato, di seguito.

Innanzitutto, con un semplice cmdlet PowerShell a una riga:


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

Quindi, la stessa cosa, facendo invece riferimento al 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

Quindi, prima di leggere il valore in una variabile. (Provato con entrambi GUID e DN, mostrandone solo uno, poiché producono lo stesso errore).


$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

Poi ho pensato che avrei potuto convivere con il fatto di dover chiamare DSRM invece di farlo nativamente.


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.

Poi ho detto all'inferno di renderlo automatizzabile, farò semplicemente clic con il pulsante destro del mouse ed eliminerò tramite ADSIedit .

inserisci qui la descrizione dell'immagine


Quindi, finalmente, sto inghiottendo il mio orgoglio e chiedendo qui. Come diavolo mi sbarazzo di questo maledetto oggetto? Esiste chiaramente e la sua esistenza sta causando problemi, eppure tutti i miei tentativi di eliminarlo da Active Directory sono accolti con bugie, maledette bugie e messaggi di errore.


Aggiornare:

Altre cose che non hanno funzionato, sulla base di commenti, suggerimenti e discussioni con ServerFaulters:

Escape da 0, come se \0rappresenta un byte null.


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

Escape del tutto \0A, come se fosse un ritorno a capo o una nuova riga, come in DOS (provato con `n,` r, `n`r e` r`n). Tutti hanno restituito lo stesso errore, quindi mostrato solo una volta.


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

Sfuggire al \0Afeed come modulo (sì, diventando un po 'disperato).


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

Poi ho pensato che avrei dovuto determinare se il \0Apersonaggio fosse anche il problema, quindi ho scelto un oggetto diverso di cui non mi importava nel Cestino di AD con la \0Astringa in esso e ho cercato di spazzarlo via. Ha funzionato.


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
Le domande sull'errore del server devono dimostrare una comprensione minima della tecnologia in questione. In caso contrario, il post si trasforma spesso in un forum di discussione , anziché in semplici domande e risposte. Il miglior consiglio che possiamo darti è di assumere un consulente per aiutarti o fare ulteriori ricerche sulle basi di questa tecnologia.
TheCleaner,

Non $C = Get-ADObject -Filter { Name -Like '*DEL:*' }tornare solo il tuo orfano? In tal caso, fare Remove-ADObject -Identity $C.DistinguishedNameche \0sia un terminatore null.
Ryan Ries

@RyanRies Restituisce solo il mio oggetto, ma in esecuzione restituisce anche lo stesso The specified account does not existerrore. Per quello che vale, ho anche provato a trattare il \0byte null (e sfuggirlo), oltre a trattare il \A0ritorno a capo / interruzione di riga (come in DOS), anche senza gioia. Sono \A0stati incontrati vari tentativi di indovinare e fuggire i personaggi The object name has bad syntaxe Directory object not found. :(
HopelessN00b,

Bummer ... Uso sempre questa tecnica su oggetti per la risoluzione dei conflitti ( '*CNF:*') e funziona perfettamente.
Ryan Ries,

Risposte:


3

Secondo l'ingegnere di supporto Microsoft con cui ho parlato ... e l'ingegnere Microsoft con cui mi ha inoltrato ... e il loro manager, la risposta breve è che l'unico modo per liberarmi di questo oggetto maledetto è fare un ripristino autorevole a prima l'aspetto di questo oggetto nel LostAndFoundcontenitore. Sono convinto che potrei anche liberarmene avviando tutti i controller di dominio su LiveCD e modificando manualmente il database AD, ma a parte queste due non-opzioni, ne sono bloccato.


Quanto a come e perché questo è il caso:

Abbiamo eseguito un repadmin /showobjmetaoggetto contrario (per sbirciare nei suoi metadati) e siamo stati in grado di determinare dalla isDeletedversione dell'oggetto ( 2) che è stato eliminato, quindi inaspettatamente e parzialmente / parzialmente ripristinato, che è ciò che sta causando il problema. Mi è stato suggerito, e mi sembra probabile, che dopo il ripristino dell'oggetto, ma prima che la modifica fosse completamente replicata, è stata nuovamente eliminata, insieme alla sua unità organizzativa principale, causando il fallimento del ripristino e risultando orfano obiettare almeno da alcuni dei nostri controller di dominio, atterrandolo nel LostAndFoundcontenitore.

Di conseguenza, il ripristino parziale non può essere ripristinato. Di conseguenza, l'oggetto SAMAccountTypeè vuoto , non può essere eliminato (o modificato).

L' SAMAccountTypeattributo è un valore che non può essere modificato da nessun utente e, tentando di farlo, genera l'errore seguente:

inserisci qui la descrizione dell'immagine

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

Non è possibile ripristinare l'oggetto in modo che il sistema (Security Accounts Manager) imposti questo attributo a causa dello stato parzialmente ripristinato in cui si trova e non possiamo eliminarlo (o modificarlo) senza un valore valido per quell'attributo.


Tuttavia, poiché questo è un caso troppo interessante per cui potrei semplicemente andarmene, cercherò un po 'di tempo per vedere se non riesco a trovare un modo per aggirare questo, o almeno espandere la mia conoscenza di DC un po 'di più nel tentativo. Batte le stampanti per la risoluzione dei problemi ... e francamente, risulta che un computer che mi dice "WILL_NOT_PERFORM" è una sfida a cui non posso resistere.

Oh sì, ti esibirai, dannazione!


1

Sulla base di questo post , potrebbe essere necessario tentare di eliminare l'oggetto su controller di dominio specifici. È possibile provare a eseguire Get-ADObject con il parametro -Server per determinare se l'oggetto è limitato a controller di dominio specifici. Quindi farei lo stesso con Remove-ADObject.


Questo non sembra essere il problema, poiché entrambi i controller di dominio sul mio sito contengono l'oggetto e la replica ronza a lungo correttamente, ma non fa mai male fare una repadmindiagnostica approfondita (che ho eseguito da quando ho perso la speranza di essendo un problema con il nome dell'oggetto), quindi una buona risposta ... non è probabile che sia la risposta qui. Quando i diag completi, aggiornerò il mio post.
HopelessN00b,

Sembrava comunque una ragionevole fase di risoluzione dei problemi. Grazie per il voto positivo.
Tim Ferrill,

0

Ho un'idea che potrebbe funzionare, potrebbe sembrare un po 'semplice o fuori dall'ordinario, ma se ricordo bene questo ha funzionato per me in passato con account orfani. Se riesci a determinare il nome esatto dell'account, il sistema su cui stai lavorando sta cercando, sia esso un account utente o un account PC / Server, prova a creare temporaneamente un account dello stesso tipo e dello stesso nome. Quindi essenzialmente stai riempiendo gli spazi vuoti, per così dire e dando al sistema esattamente quello che vuole.

Quindi, se si tratta di un account PC / server, è necessario ricollegare una macchina al dominio con il nome esatto che sta cercando, ma solo allo scopo di creare l'account. Oppure, se si tratta di un account utente, ricreare l'account utente con lo stesso nome esatto, ecc. potrebbe essere necessario eseguire il comando gpupdate / f nel prompt dei comandi per consentire al server di riconnettere l'account appena ricreato con l'unità organizzativa orfana.

Quindi procedere con il tentativo di eliminare l'unità organizzativa orfana che si voleva eliminare originariamente. Dopo aver ripulito l'unità organizzativa, puoi quindi eliminare l'account creato per questa attività.

Spero che questo ti aiuti allegria

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.