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:
Nun wird zunächst der Benutzer abgefragt, der die Rechte zum Ändern hat (Domänen-Admin)
Nun wird abgefragt, ob ein einzelner PC oder mehrere PCs umbenannt werden sollen.
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.
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.
Hier die Abfrage, ob weitere PCs umbenannt werdewn sollen
Und zum Schluss noch den lokalen Cache löschen, damit man nicht mit neu und alt durcheinander kommt.
-------------------------------------------------------------------------- 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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 03.11.2009 um 12:12:23 Uhr
#rgc = 622
Content-ID: 125667
Url: https://administrator.de/contentid/125667
Ausgedruckt am: 04.11.2024 um 22:11 Uhr
30 Kommentare
Neuester Kommentar
Hi,
hattu fein demacht!
Kleiner Tipp noch am Rande
ersetzt die Zeilen 06-10 in :ActionEnd.
hattu fein demacht!
Kleiner Tipp noch am Rande
if /i '%Entscheidung:~0,1%' == 'j' goto WasWillstDuTun
ersetzt die Zeilen 06-10 in :ActionEnd.
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.
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.
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
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
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
mfg
David
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
mfg
David
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
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
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
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
Hallo, kleine Ergänzung:
Man kann netdom auch den Parameter reboot mitgeben:
netdom ……. /force /reboot:5
mfg
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