larz
Goto Top

PCs innerhalb einer Domäne über Netzwerk umbenennen

Einen einzelnen PC umzubenennen ist nicht schwer - an die Kiste, User abmelden, Admin anmelden, umbenennen, neu starten, fertig. Aber was wenn mehrere dutzend umbenannt werden müssen?

Ausgangssituation
Jedes Jahr werden bei uns von insgesamt 10 Mitarbeitern dutzende (bis max. 100) PCs ausgetauscht (Leasingverträge). Die Installation ist dank einer Software-Distributions-Lösung kein Problem.
Nur ist es so, dass diese auf den Computernamen reagiert. Will ich also einen PC neu und automatisch installiert haben, muss er so heißen wie in der Konfiguration hinterlegt.
Also ist der Gang bisher so gewesen, dass man die bestehenden PCs einzeln per Hand umbenannt hat, dann die neuen in einem separaten Raum aufgestellt und die Installation automatisiert durchgeführt hat, um keine doppelten Namen im Netzwerk zu haben. Rechnet man mit 5 Minuten pro Umbenennung (Wegezeiten zwischen den Büros mal ausser Acht gelassen), so kommen wir auf einen zeitlichen Aufwand von 8,3 Stunden, also einen ganzen Arbeitstag nur für's Umbenennen...

Also sollte eine Möglichkeit geschaffen werden, dies zu erleichtern, ohne den Benutzer unnötig zu stören.

Microsoft bietet für Umbenennungen im Netz (und weitere Dinge) das Tool netdom.exe an, dass über die Kommandozeile aufgerufen wird. Folgende Batch habe ich hierfür mit Unterstützung durch bastla und greypeter erstellt.

Ihr benötigt folgende Dateien:
- netdom.exe (im Lieferumfang der Windows XP-Supporttools enthalten)
- Umbenennen.bat (neu zu erstellen)
- Liste_PCs.txt (wo alte und neue PC-Namen enthalten sind, neu zu erstellen)

-------------------------------------------------------------------------- Beginn Batch Beschreibung

Zunächst werden ein paar Parameter vorgegeben:
@ECHO OFF & SETLOCAL 
REM Hier werden Variablen für die Umlaute definiert, damit Sie nachher im Text richtig angezeigt werden (ANSI/ASCI-Problem)
chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul
REM Hier wird die betroffene Domäne angegeben:
set Domain=DomainName
COLOR 0E
CLS

Nun wird zunächst der Benutzer abgefragt, der die Rechte zum Ändern hat (Domänen-Admin)
REM Damit's hübscher aussieht, auch Admins haben Augen :-)  
@ECHO =======================================================
@ECHO     ____  ______   ____                                
@ECHO    / __ \/ ____/  / __ \___  ____  ____ _____ ___  ___ 
@ECHO   / /_/ / /      / /_/ / _ \/ __ \/ __ `/ __ `__ \/ _ \
@ECHO  / ____/ /___   / _, _/  __/ / / / /_/ / / / / / /  __/
@ECHO /_/    \____/  /_/ l_l\___/_/ /_/\__,_/_/ /_/ /_/\___/ 
@ECHO.
@ECHO =======================================================

:Eingabe_Benutzer
@ECHO Bitte Benutzername eingeben (ohne Dom%ae%ne):
set /p Benutzername=
@ECHO.
REM Hier wird das Passwort mittels einem VB-Schnipsel eingegeben, damit es bei der EIngabe nicht angezeigt wird
set "GetPW=%temp%\GetPW.vbs"  
echo WScript.Echo CreateObject("ScriptPW.Password").GetPassword()>"%GetPW%"  
echo Zugeh%oe%riges Passwort eingeben (wird nicht angezeigt): 
for /f "delims=" %%i in ('cscript //nologo "%GetPW%"') do set "Passwort=%%i"  
del "%GetPW%"  
@ECHO Passwort wurde eingegeben, OK

Nun wird abgefragt, ob ein einzelner PC oder mehrere PCs umbenannt werden sollen.

:WasWillstDuTun
CLS
@ECHO =======================================================
@ECHO     ____  ______   ____                                
@ECHO    / __ \/ ____/  / __ \___  ____  ____ _____ ___  ___ 
@ECHO   / /_/ / /      / /_/ / _ \/ __ \/ __ `/ __ `__ \/ _ \
@ECHO  / ____/ /___   / _, _/  __/ / / / /_/ / / / / / /  __/
@ECHO /_/    \____/  /_/ l_l\___/_/ /_/\__,_/_/ /_/ /_/\___/ 
@ECHO.
@ECHO =======================================================
@ECHO M%oe%chten Sie einen oder mehrere PCs umbenennen?
set /p EinenOderMehrere=W%ae%hlen Sie (E)inen oder (M)ehrere: 
if '%EinenOderMehrere%' == 'e' goto RenamePC  
if '%EinenOderMehrere%' == 'E' goto RenamePC  
if '%EinenOderMehrere%' == 'm' goto RenameMany  
if '%EinenOderMehrere%' == 'M' goto RenameMany  
@ECHO =======================================================
@ECHO Fehleingabe, Programm wird beendet
EXIT

Falls nur ein PC umbenannt werden soll, geht es hier weiter; es werden der alte und der neue Name abgefragt und die Umbenennung findet statt.
Danach wird abgefragt, ob weiterere PCs umbenannt werden sollen.

:RenamePC
CLS
@ECHO =======================================================
@ECHO     ____  ______   ____                                
@ECHO    / __ \/ ____/  / __ \___  ____  ____ _____ ___  ___ 
@ECHO   / /_/ / /      / /_/ / _ \/ __ \/ __ `/ __ `__ \/ _ \
@ECHO  / ____/ /___   / _, _/  __/ / / / /_/ / / / / / /  __/
@ECHO /_/    \____/  /_/ l_l\___/_/ /_/\__,_/_/ /_/ /_/\___/ 
@ECHO.
@ECHO =======================================================
@ECHO Umzubenennenden Computernamen eingeben ("Name alt")  
set /p NameAlt=
@ECHO.
@ECHO Bitte neuen Computernamen eingeben
set /p NameNeu=
netdom renamecomputer %NameAlt% /newname:%NameNeu% /userd:%Domain%\%Benutzername% /PasswordD:%Passwort% /force
@ECHO =======================================================
GOTO Abfrage_nochmal

Falls die mehrere PCs umbenannt werden sollen, wird hier eine Text-Liste (Aufbau siehe unten) eingelesen und mittels einer FOR-Schleife jeder einzelne Eintrag abgearbeitet.
Danach erfolgt ebenfalls die obligatorische Frage, ob weitere PCs umbenannt werden sollen.

:RenameMany
CLS
@ECHO =======================================================
@ECHO     ____  ______   ____                                
@ECHO    / __ \/ ____/  / __ \___  ____  ____ _____ ___  ___ 
@ECHO   / /_/ / /      / /_/ / _ \/ __ \/ __ `/ __ `__ \/ _ \
@ECHO  / ____/ /___   / _, _/  __/ / / / /_/ / / / / / /  __/
@ECHO /_/    \____/  /_/ l_l\___/_/ /_/\__,_/_/ /_/ /_/\___/ 
@ECHO.
@ECHO =======================================================
@ECHO Dateiname der PC-Liste angeben:
set /p Datei=
@ECHO.
@ECHO Datei %Datei% auslesen ....
For /F "tokens=1,2* " %%i in (%Datei%) do call :DoAction %%i %%j  
goto Abfrage_nochmal

:DoAction
@ECHO Umbenennen %1 in %2
netdom renamecomputer %1 /newname:%2 /userd:%Domain%\%Benutzername% /PasswordD:%Passwort% /force
@ECHO =======================================================
goto :eof

Hier die Abfrage, ob weitere PCs umbenannt werdewn sollen

:ActionEnd
GOTO Abfrage_nochmal

:Abfrage_nochmal
set /p Entscheidung=M%oe%chten Sie weitere PCs umbenennen (J/N)? 
if '%Entscheidung%' == 'j' goto WasWillstDuTun  
if '%Entscheidung%' == 'ja' goto WasWillstDuTun  
if '%Entscheidung%' == 'J' goto WasWillstDuTun  
if '%Entscheidung%' == 'Ja' goto WasWillstDuTun  
if '%Entscheidung%' == 'JA' goto WasWillstDuTun  

:Ende
@ECHO Kein weiterer PC soll umbenannt werden, Programm wird beendet
@ECHO Lösche lokalen 

Und zum Schluss noch den lokalen Cache löschen, damit man nicht mit neu und alt durcheinander kommt.

ipconfig /flushdns
EXIT

-------------------------------------------------------------------------- Ende Batch Beschreibung

Hier ein Beispiel, wie die PC-Liste der umzubenennenden Geräte aufgebaut sein muss:

-------------------------------------------------------------------------- Datei Inhalt Liste_PCs.txt

PCNameAlt-1 PCNameNeu-1
PCNameAlt-2 PCNameNeu-2
PCNameAlt-3 PCNameNeu-3
PCNameAlt-4 PCNameNeu-4
PCNameAlt-5 PCNameNeu-5
PCNameAlt-6 PCNameNeu-6
----------------------------------------------------------------------- Ende Datei Inhalt Liste_PCs.txt


Vorteil:
- Schnelle Umbenennung vieler PCs
- man muss sich nicht extra am entsprechenden PC anmelden

Nachteil:
- der PC muss laufen (so oder so)
- Die Umbenennung ist erst nach einem Neustart wirksam, also üblicherweise wenn sich dere User am nächsten Tag anmeldet (so oder so)

Ich hoffe die Beschreibung ist verständlich und nützt euch etwas


Gruß
Larz
Kommentar vom Moderator Biber am 03.11.2009 um 12:12:23 Uhr
Zitat von @dave114:
Das einzige was funktioniert hat ist das umbennen meinens
#rgc = 622

Content-ID: 125667

Url: https://administrator.de/contentid/125667

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

runcmd
runcmd 24.09.2009 um 11:53:40 Uhr
Goto Top
hi,

die umlautunterst%ue%tzung ist ja mal abgefahren, dein freiheitlicher ansatz gefällt... :-P

auch deine methode zum eingeben des passworts...

"thumbs up"

gruß
Larz
Larz 24.09.2009 um 12:45:25 Uhr
Goto Top
Hi,

das mit den Umlauten ist ja auch mehr als lästig face-smile

Danke

Gruß
Lars
Alex1989
Alex1989 24.09.2009 um 12:55:52 Uhr
Goto Top
Moin moin,

Super Anleitung, benötige das zwar grade nicht, aber der Tag kommt bestimmt ;)

Gruß,


Alex
81825
81825 24.09.2009 um 12:55:59 Uhr
Goto Top
Hi,

hattu fein demacht! face-wink

Kleiner Tipp noch am Rande
if /i '%Entscheidung:~0,1%' == 'j' goto WasWillstDuTun  

ersetzt die Zeilen 06-10 in :ActionEnd.
Larz
Larz 24.09.2009 um 13:22:19 Uhr
Goto Top
Hi,

ok, hab's noch nicht ausprobiert, aber warum ist das so? Kannst Du das noch etwas erläutern? Ich möchte ja abfangen, dass der Benutzer "Ja" sagen kann, wie er will....

Gruß
Larz
81825
81825 24.09.2009 um 13:26:25 Uhr
Goto Top
Hi,

if /i ignoriert Groß-/Kleinschreibung, und du erwartest ja nur den 1. Buchstaben (J/N), also kannst du auch zur Überprüfung nur den 1. Buchstaben der Variablen nutzen.
Larz
Larz 24.09.2009 um 14:08:14 Uhr
Goto Top
Clever, gute Idee. Hoffentlich gibt keiner als Antwort je "Jetzt nicht" ein face-big-smile

Gruß
Larz
TheEternalPhenom
TheEternalPhenom 29.09.2009 um 13:01:59 Uhr
Goto Top
Geiles Tool

Wenn meine Vorgesetzten jetzt noch zustimmen erleichter mir das en haufen Arbeit beim neu machen von PC-Räumen.
Larz
Larz 29.09.2009 um 19:32:34 Uhr
Goto Top
Servus duffman,

das würde mich freuen, wenn es jemandem so nutzt. Dürfte rein technisch auch unbedenklich sein, weil alles mit Windows Bordmitteln funktioniert...

Gruß
Larz
TheEternalPhenom
TheEternalPhenom 30.09.2009 um 09:46:28 Uhr
Goto Top
Denke ich auch aber als Praktikant gilt immer: Erst fragen dann machen.

Mal was anderes wäre es teschnisch Möglich über eine Batch sogar die Rechner an die Domäne anzumelden???

mfg duffman521
Larz
Larz 30.09.2009, aktualisiert am 18.10.2012 um 18:39:31 Uhr
Goto Top
Hallo,

ja, sll mit netdom auch gehen. Habe ich selbst noch nicht probiert, ist aber sicher möglich.
Schau mal über

netdom /help

oder hier: NetDom-Batchdatei - Umbenennen und in neue Domain verschieben

Gruß
Larz
TheEternalPhenom
TheEternalPhenom 30.09.2009 um 20:20:16 Uhr
Goto Top
thx

sowas würde nämlich sehr viel zeit sparen
wir haben vor ein paar wochen fast 2 stunden mit spiegeln verbracht und das nur solange weil es anmelden an der domäne bzw das bennen der pc solange dauert
dave114
dave114 02.10.2009 um 08:50:22 Uhr
Goto Top
morgen,

das Script ist super - erspart mir jede Menge Arbeit.

Was mich jetzt nur interessiert ist was passiert wenn ich einen Computername ändere dieser aber schon vorhanden ist?
Wird dann das Computerkonto überschrieben oder funktioniert das nicht? Am besten wäre es wenn das Srcipt eine Warnmeldung ausgeben würde.

Ich kann das hier gerade leider nicht testen aber vllt hat einer von euch schon die Erfahrung gemacht oder würde es für mich testen.

Vielen Dank Larz für das Script und viele Grüße.

David
Larz
Larz 02.10.2009 um 09:29:03 Uhr
Goto Top
Moin David,

falls es den Comutername schon gibt kommt die Fehlermeldung:

Das Konto existiert bereits.
The command failed to complete successfully.



Gruß
Larz
dave114
dave114 02.10.2009 um 09:35:38 Uhr
Goto Top
vielen Danke Larz,

dann kann ich das Script ja ohne Bedenken hier im Netz einsetzen.

mfg

david
dave114
dave114 02.10.2009 um 10:33:34 Uhr
Goto Top
mhh ich hab da noch ein Problem,

über welche Rechte muss das Konto verfügen mit dem ich die Rechner umbenennen will?

Das Passwort wird doch im Klartext übers Netzwerk übertragen oder seh ich das falsch?

mfg

David
Larz
Larz 02.10.2009 um 19:24:21 Uhr
Goto Top
Du musst Domänenadmin sein. Ob das Passwort von netdom.exe unverschlüsselt übertragen wird, kann ich Dir nicht sagen...

Gruß
Larz
dave114
dave114 02.10.2009 um 22:39:55 Uhr
Goto Top
das ist etwas suboptimal da ich nur Kontenoperator bin :-P


mhh dann kann das nicht funktionieren.


mfg

david
Larz
Larz 02.10.2009 um 22:42:54 Uhr
Goto Top
versuch's doch mal mit einem PC. Vielleicht reicht der Kontenop. ja auch...
dave114
dave114 02.10.2009 um 22:49:53 Uhr
Goto Top
ich hab es versucht

bestimmt zwei Stunden lang - alle möglichen Kombinationen der Syntax und meiner Domänen-Daten und auch die Daten des lokalen Admins. Das einzige was funktioniert hat ist das umbennen meinens eigenen PCs auf dem ich mit meinen Domänen-Daten auch gleichzeitig lokaler Admin bin.

vllt weiß da noch jemand was face-wink

mfg

David
Larz
Larz 03.10.2009 um 09:14:04 Uhr
Goto Top
Moin,

was versucht? Als Nicht-Domänen-Admin eine Umbenennung durchzuführen?
Wie stellen sich das deine Chefs denn vor, ohne die Rechte kannst Du doch auch nicht am PC selbst Umbenennungen vornehmen, oder?

Gruß
Lars
dave114
dave114 03.10.2009 um 11:52:45 Uhr
Goto Top
morgen,

bis jetzt haben wir dass immer so gemacht das ich mich per Dameware draufgeschaltet habe, mich als lokaler Admin angemeldet habe, die Kiste umbenannte hab und dann neu gestartet habe. Das Problem bei dem ganzen ist halt nur das ich die Mitarbeiter anrufen muss und sie ihre Arbeit unterbrechen müssen.

mfg

David
Larz
Larz 03.10.2009 um 18:56:58 Uhr
Goto Top
Hi David,

als lokaler Admin geht das doch gar nicht. Du musst doch beim Umbenennen einen Benutzer angeben, der das Konto in der Domäne umbenennen darf?!?

Gruß
Larz
dave114
dave114 03.10.2009 um 19:07:23 Uhr
Goto Top
morgen Larz,

ja stimmt jetzt wo du es sagst face-wink

Ich authentifiziere mich dann noch an mit meinen Daten an der Domäne und da ich ja Kontenoperator bin kann ich den Rechner dann auch umbenennen.

mfg

David
Larz
Larz 03.10.2009 um 19:12:14 Uhr
Goto Top
...dann sollte es über die Batch aber genauso gehen...

Gruß
Larz
dave114
dave114 03.10.2009 um 19:19:41 Uhr
Goto Top
wie gesagt ich habe am Freitag mehr als zwei Stunden lang probiert und dranrumgebastelt -

aber ich werde am Montag weiter machen face-smile

Danke für deine Unterstützung.

Ich werde mich melden wenn ich zu neuen Erkenntnissen gekommen bin.

mfg

David
oi-polloi
oi-polloi 06.10.2009 um 17:44:55 Uhr
Goto Top
hallo,

das ist/wäre mir jetzt neu, wenn man einen PC, der sich in einer bestehenden Domäne befindet, einfach so umbennen kann.
Ich kenne bis jetzt nur die Prozedur, aus der Domäne abmelden, als admin anmelden und das Ding umbennen, neustart und wieder in die Domäne integrieren.
Korrigiert mich falls ich da falsch liege.

Cheers
Larz
Larz 06.10.2009 um 17:52:46 Uhr
Goto Top
Hallo,

das ist unter W2k3 schlichtweg falsch. Umbenennen kann ich einen PC natürlich auch wenn er in der Domäne ist. Wieso sollte das auch nicht gehen???
Hab ich bereits hundertfach gemacht.

Gruß
Larz
25110
25110 03.11.2009 um 12:03:45 Uhr
Goto Top
Hallo, kleine Ergänzung:

Die Umbenennung ist erst nach einem Neustart wirksam, also üblicherweise wenn sich der User am nächsten Tag anmeldet (so oder so)

Man kann netdom auch den Parameter reboot mitgeben:

netdom ……. /force /reboot:5

mfg
Larz
Larz 03.11.2009 um 13:26:42 Uhr
Goto Top
Hallo,

Na, die Benutzer werden sich bedanken face-big-smile
Habe das immer ohne den Parameter gemacht, damit die nichts davon mitbekommen...

In Verbindung mit einem Wake-on-LAN-Script aber eine gute Ergänzung falls man das bei nicht produktiv genutzten PCs oder am Wochenende macht.

Gruß
Larz