abrelatas
Goto Top

Computername von Clients per Script ändern und in die Domäne bringen

Folgendes:

Wir haben 20 Clients (win XP) die sind alle in einer Domäne von einem 2003 Server. Auf die 20 Clients kommt jede Woche ein neues Image, dabei kriegt jeder Rechner den Namen: NC67-XY.
XY müssen wir dann von Hand in die jeweilige Rechnernummer ändern, heisst 1 bis 20.
Danach müssen alle in die Domäne gebracht werden.

Um die Arbeit einfacher zu machen, würden wir gerne ein Script benutzen.
Hat jmd. eine Idee oder vielleicht sogar ein fertiges Script?

Danke!

Content-ID: 56654

Url: https://administrator.de/forum/computername-von-clients-per-script-aendern-und-in-die-domaene-bringen-56654.html

Ausgedruckt am: 23.12.2024 um 18:12 Uhr

Dani
Dani 14.04.2007 um 20:17:24 Uhr
Goto Top
G' Abend,
ich hatte auch mal ein ähnliches Problem, bloß mit der Installation über RIS.

Lösung:
Ich habe mir eine MySQL Tabelle angelegt und dort Rechnername + MAC-Adresse hinterlet. Nun wirst du dich fragen, warum so und nicht einfach eine Textdatei?! Ganz einfach, wir wollten die Verwaltung über PHP lösen, somit ist die Tabelle immer die Aktuelleste und es gibt keine doppelten Dateien.

Foglende Dateien brauchst du im Verzeichnis "C:\WINDOWS\system32". Somit kann die EXE-Datei direkt angesprochen werden (OHNE Pfad).

- netdom.exe (findest du im RessourceKit von WindowsXP /2003
- mysql.exe (findest du in jeder MySQL Version


Nun zur Batchdatei....

1. Schritt
Wie stelle ich es am besten, dass der Batch nur einmal gestartet wird?
Ich habe es einfach ihn den Autostart des Benutzers kopieren lassen, der nach der Installation angemeldet wird (in deinem Fall musst es direkt im Image festlegen).

Beispiel:
@echo off & setlocal

IF EXIST "C:\computer.txt" GOTO domain  
...
2.Schritt:
Nun erfolgt die Abfrage der MySQL - Tabelle. In %pc% steht nun der gewünschte Computer, der in der Tabelle für die MAC-Adresse hinterlegt ist. Bitte nicht vergessen, einen extra Benutzer für MySQL anzulegen. Dieser sollte NUR READ-Rechte haben. Somit kann kein Benutzer Mist mit ihm machen.
....
::Computername aus der Liste auslesen
FOR /f "tokens=2 delims=:" %%a IN ('IPCONFIG /all ^| FIND "Physi"') DO SET mac=%%a  

::Sucht den passenden COmputernamen aus der Tabelle heraus.
FOR /f %%b IN ('mysql.exe -h HOST -u BENUTZER -pPASSWORT -D DATENBANK --execute="select computer from TABELLE where mac=trim(leading ' ' from lcase('%mac%'));" -s') DO SET pc=%%b  
....
3.Schritt:
Jetzt muss bloß noch noch der Computername geändert werden. Dort wird bereits die Variable "%pc%" verwendet!! Dies passiert hier:
...
REG add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %pc% /f  
REG add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %pc% /f  
REG add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %pc% /f  
REG add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %pc% /f  
...
4. Schritt:
Nun muss ein Neustart erfolgen.
....
SHUTDOWN -r -f -t 10
GOTO ende
....
5.Schritt:
Nun wieder das selbe wie der 1.Schritt (vom bewirken her). Dies mal wird überprüft, ob der Client schon in der Domain ist:
....
IF EXIST "C:\domain.txt" GOTO neustart  
...
6. Schritt:
Alle Netzlaufwerke trenne und dann kann mit netdom.exe der Computer in die Domäne aufgenommen werden.
....
NET use * /d /y

NETDOM join %computername% /Domain:DOMÄNE /UserD:BENUTZER /PasswordD:PASSWORT /OU:"OU=Computer,OU=TEST,DC=dt,DC=local"  
....
Auch hier gilt, für das Hinzufügen in die Domäne einen extra Benutzer im ADS erstellen, der nur in der Gruppe Domänen-Benutzer und Kontoperator ist!! Du kannst hier auch klar sagen, in welche OU der Computer soll.

7.Schritt:
Nun noch die letzte Abfrage:
....
ECHO OK >> "C:\domain.txt"  
SHUTDOWN -r -f -t 10
:ende
So das war es auch schon. Sieht zwar nach ziemlich viel aus, aber in der Batchdatei (ohne meine Kommentare) kommst du auf 10-15 Zeilen.


Gruß
Dani
Biber
Biber 14.04.2007 um 20:28:05 Uhr
Goto Top
@Dani
Prima Beitrag von Dir!

Auch wenn es für Abrelatas' Anforderung nicht ganz ohne Änderungen passt, hätte ich genau diese Musterlösung nochmal als Tutorial in "Batch & Shell".

Würdest Du das bitte gelegentlich machen bitte?
Muss nicht an diesem Sahnewetter-Wochenende sein... ist nicht eilig.

Danke Dir
Biber
Abrelatas
Abrelatas 14.04.2007 um 20:35:41 Uhr
Goto Top
RichtigAlso ich bin schon ein wenig bewandert im Umgang mit MySQL und so... aber das da auf meine Anforderungen umzuschreiben... hui
Dani
Dani 14.04.2007 um 20:42:50 Uhr
Goto Top
@Biber
hiermit reserviere ich das Thema für mich! face-smile Ich habe dir noch eine PM geschickt.

@Abrelatas
Naja....so auf die Schnelle, konnte ich nix anders finden bzw. programmieren.
Einfach eine MySQL eine Datenbank anlegen. "TEST" muss durch deinen gewünschten Namen ersetzen.
CREATE DATABASE `test`;

Nun musst du die Tabelle anlegen:
CREATE TABLE `mac_adressen` (
`id` INT( 255 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`mac` TEXT NOT NULL ,
`pc_name` TEXT NOT NULL 
) ENGINE = MYISAM ;
ACHTUNG! Das sind die fertigen SQL-Statments für dich. "mac_adressen" ist der Name der Tabelle. Kannst du auch wieder nach belieben ändern.


Gruß
Dani
Abrelatas
Abrelatas 14.04.2007 um 20:59:37 Uhr
Goto Top
Ok, also die MySQL Tabelle hab ich damit ja... nun die Liste für die Computer !? ^^
Dani
Dani 14.04.2007 um 21:22:44 Uhr
Goto Top
Jo...da wirst du wohl ein bisschen Handarbeit machen müssen. Einmal die MAC-Adressen auslesen. Der Rest wäre viel zu Zeitaufwendig.


Gruß
Dani
Abrelatas
Abrelatas 16.04.2007 um 08:51:52 Uhr
Goto Top
Also erstmal vielen Dank für deine Bemühungen und die schnelle Lösung.
Leider hab ich immer noch keine Ahnung, wie ich das nun anstellen soll.
Bzw. ich weiss ja nun das ich ne MySQL Tabelle brauche und da die MAC - Adressen reinschreiben muss und so, nur das mit dem Script, ist mir noch zu... naja undurchsichtig aufgrund deiner Beschreibung. Kannst du das anders hinbekommen?^^
Wäre sehr nett, danke!