In der Regel reicht es aus, das Computerkonto beizubehalten und nur den "Domain Join" aufzufrischen.
Domäne raus / rein
Der Rechner kann zunächst in eine Arbeitsgruppe aufgenommen werden:
Nach einem Reboot kann er dann wieder in die Domäne aufgenommen werden.
Ohne in die Workgroup zu wechseln
Wer sich an dieser Stelle den Übergang in die Workgroup sparen will, der kann wie folgt vorgehen:
Wir ändern einfach den FQDN der Domäne ("my.domain") in den Netbios-Namen der Domäne "DOMAIN". Das akzeptiert die GUI als Änderung und lässt uns
damit das AD Konto auffrischen. Danach ist ein Neustart erforderlich.
Der Rechner kann natürlich auch mittels PowerShell (Add-Computer) oder netdom der Domäne hinzugefügt werden.
Computerkonto löschen?
In einigen Fällen ist es jedoch nötig auch das Computerkonto zu löschen.
Die ist zum Beispiel der Fall, wenn ein Client umbenannt werden soll, es aber das Konto (bzw. den Hostnamen) des Clients bereits gibt.
An dieser Stelle sollte man das AD Konto löschen.
Löscht man das Computerkonto, sollte man die vollständige Replizierung der Domain Controller abwarten. Windows hat die Eigenschaft beim Domain-Join
verschiedene DCs nach einem bereits vorhandenen Konto zu durchsuchen.
Hierbei spielt die AD-Sitezuordnung keine Rolle.
Hier ein Beispiel:
Wird haben zwei DCs am Hauptstandort. DC-MAIN01, DC-MAIN02
Zusätzlich gibt es einen DC in einem Außenbüro. DC-SITE01
Das Computerkonto wird auf DC-MAIN01 gelöscht. DC-MAIN02 repliziert relativ schnell diese Änderung. Bei DC-SITE01 dauert dies jedoch länger (abhängig davon wie die Inter-Site Replikationspläne im AD gesetzt wurden).
Versucht man direkt nach dem Löschen des Computerkontos den Client wieder in die Domain aufzunehmen, dann ist die Wahrscheinlichkeit groß, dass dieser auf DC-SITE01 das noch vorhandene Konto findet und verwendet.
Der Client funktioniert erst einmal wie gewohnt. Repliziert jedoch nun irgendwann DC-SITE01 mit DC-MAIN01 oder 02, so wird das Konto gelöscht.
Egal ob dieses noch einmal geändert wurde oder nicht.
Abwarten?
Man könnte nun natürlich einfach abwarten, bis die Löschung repliziert wurde.
Im Zweifelsfalle dauert dies jedoch zu lange.
In kleineren Umgebungen können wir auch die Replizierung manuell erzwingen.
Dazu könnt ihr dieses PowerShell Skript verwenden:
repadmin /viewlist * | Foreach-Object `
{
If($_)
{
$StrDCName = ([regex]::match($_,"(?<=DSA_LIST\[\d?\]\s\=\s).+").value)
Write-Host "Processing "$StrDCName -for Green
repadmin /kcc $StrDCName
repadmin /syncall /A /e $StrDCName
}
}
Hierbei werden euch alle Inter-Site Replikationen angestoßen.
Bei größeren Umgebungen ist dies jedoch zu träge und dauert ebenfalls zu lange.
Computerkonten sofort löschen
Die einfachste Methode ist ein Skript, das die Computerkonten auf allen DCs sofort löscht.
cls
@echo off
IF NOT EXIST "%windir%\system32\dsquery.exe" (
echo.
echo Program will end. dsquery.exe not found
echo.
pause
exit
)
set /P PC=Please enter the Computername you want to delete:
for /f "delims=" %%A in ('dsquery computer -name %PC%') do set "DN=%%A"
echo.%DN%|findstr /C:"CN=" >nul 2>&1
if errorlevel 1 (
cls
echo.
echo Program will end. No Computer found in Active Directory.
echo.
pause
exit
)
cls
echo.
echo dsrm %DN% -s DCNAME -noprompt
echo.
set /P c=Do you want to run the command above [Y/N]?
if /I "%c%" EQU "Y" goto choice
if /I "%c%" EQU "J" goto choice
exit
:choice
cls
echo.
for /F %%i IN ('dsquery Server -o rdn -Forest') DO (
echo.
echo Trying to delete account on %%i
dsrm %DN% -s %%i -noprompt
echo.
)
pause
Hierbei handelt es sich um ein reguläres Batch-Skript.
Auf dem Client auf dem das Skript ausgeführt wird, müssen jedoch die AD-Commandline Tools installiert sein. Installiert man mittels RSAT das Snapin "Active Directory Users and Computers", so werden diese auf dem Client per Default mit installiert.
Nachdem ihr das Skript ausgeführt habt, wird das Konto auf allen erreichbaren DCs gelöscht und ihr könnt den Rechner ohne Probleme in die Domäne aufnehmen.
An dieser Stelle sei gesagt, alle Skripte führt ihr wie immer auf eigene Verantwortung aus.
Hallo Matthias,
AntwortenLöschenVielen Dank für den Artikel und vor allem auch das Replikationsskript. Allerdings funktioniert dieses so nicht. Die Variable bzw. der Regex-Match müsste eigentlich so aussehen:
$StrDCName = ([regex]::match($_,"(?<=DSA_LIST\[\d*\]\s\=\s).+").value)
Zumindest bei uns gibt es kein DC_LIST, sondern eben nur DSA_LIST und d? funktioniert nur bei einer einstelligen Zahl von Domaincontrollern.
Mfg,
Christian
Hallo Christian,
AntwortenLöschenDu hast recht, ich hatte fälschlicherweise die 2003er Version gepostet.
Hier war es noch DC_LIST.
Funktioniert es jetzt?