customcore
Goto Top

Spezielle Kennwortänderung im AD per Batch

Es geht um ein kleines Schulprojekt.

Hi ich benötige auf die schnelle mal Hilfe von euch. Und zwar habe ich per Batch ca. 400 User angelegt im AD, die Schüler. Wir haben gesagt das Standardkennwort lautet 1234 für alle gleich. Nun sollen sie sich bei der nächsten Anmeldung ein neues ausdenken. So das soll nicht so wie Ihr denkt gehen und zwar kann ich ja im AD rechte maustaste auf den User machen und sagen "Kennwort bei Neuanmeldung neu festlegen" dann gebe ich wenn ich mich an der Workstation anmelde mein neues PW ein. So da wir hier aber 2 Organisationseinheiten haben (einmal die PC-User zb user123, user124, ... die sollen die Arbeitsplätze identifizieren und die andere OU sind die Schüler bei Namen zB. Schmidt,....) Wir melden uns mit dem PC-User an der Workstation an (also die Anmeldemaske von Windows) da soll das PW nicht geändert werden. Man meldet sich also normal an mit User123 und PW und entsprechender Domäne. So im Autostart liegt nun eine Batch die auf einen persönlichen Ordner zugreift für den jeweiligen Schüler (es wurden auch ca. 400 Ordner angelegt also für jeden der Private mit dementsprechenden Rechten). Die Batch für den persönlichen Ordner ist so aufgebaut: Zuerst wird nach Jahrgang gefragt dann nach Schülername dann das Kennwort. Also ein Netzwerklaufwerk verbinden unter anderen Anmeldedaten. Dort befindet sich ein NET USE drin. So das Problem ist kann ich ihm sagen wenn er sich zu seinem persönlichen Ordner verbinden will, das das PW geändert werden muss, denn meines wissens geht das PW reset nur an Workstations wenn man sich da anmeldet. Und wie kann man dem Script sagen, wenn Kennwort nicht 1234 darf er nicht noch einmal ändern? Sehr umständliche Sache ^^ Danke schonmal face-smile

Content-Key: 171539

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

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: 60730
60730 15.08.2011 um 22:43:09 Uhr
Goto Top
moinsen,

Zitat von @customcore:
Hi ich benötige auf die schnelle mal Hilfe von euch.

  • Alte Säcke haben alte Augen und brauchen eine Paue zwischen den Gedankensprüngen.....

Und zwar habe ich per Batch ca. 400 User angelegt im AD, die Schüler.
Wir haben gesagt das Standardkennwort lautet 1234 für alle gleich.
Nun sollen sie sich bei der nächsten Anmeldung ein neues ausdenken.
So das soll nicht so wie Ihr denkt gehen und zwar kann ich ja im AD rechte maustaste auf den User machen und sagen "Kennwort bei Neuanmeldung neu festlegen",
dann gebe ich wenn ich mich an der Workstation anmelde mein neues PW ein.

So da wir hier aber 2 Organisationseinheiten haben (einmal die PC-User zb user123, user124, ... die sollen die
Arbeitsplätze identifizieren und die andere OU sind die Schüler bei Namen zB. Schmidt,....)
Wir melden uns mit dem PC-User an der Workstation an (also die Anmeldemaske von Windows) da soll das PW nicht geändert werden.
Man meldet sich also normal an mit User123 und PW und entsprechender Domäne.
So im Autostart liegt nun eine Batch die auf einen persönlichen Ordner zugreift für den jeweiligen Schüler (es wurden auch ca. 400 Ordner angelegt also für jeden der Private mit
dementsprechenden Rechten).

Die Batch für den persönlichen Ordner ist so aufgebaut: Zuerst wird nach Jahrgang gefragt dann nach Schülername dann das Kennwort.
Also ein Netzwerklaufwerk verbinden unter anderen Anmeldedaten. Dort befindet sich ein NET USE drin.

  • Gibts das auch als Beispiel?

So das Problem ist kann ich ihm sagen wenn er sich zu seinem persönlichen Ordner verbinden will, das das PW geändert werden muss, denn meines wissens geht das PW reset nur an Workstations wenn man sich da anmeldet.
Und wie kann man dem Script sagen, wenn Kennwort nicht 1234 darf er nicht noch einmal ändern? Sehr umständliche Sache ^^ Danke schonmal
face-smile

  • "So" kann man(n) das eher lesen - btw: hab ich in deinen Zeilen eine ganze Handvoll "So" gelesen?...

  • Du kannst gerne mal in meinen Antworten suchen, da findest du mindestens einen Fred, wo auch jemand herausfinden wollte, welcher AD User noch das Passwort xyz hat.
if exist b:\ Net use B: /d
Net use b: \\server\freigabe 1234 /user:%username%
if not exist b:\ goto hell
Set /p PASS=neues Passwort eingeben
if not "%PASS%"=="" IF not "%PASS%"=="1234" Net user %username% %PASS% /Domain>nul  
Net use B: /d
:hell

Gruß
Mitglied: customcore
customcore 16.08.2011 um 08:08:13 Uhr
Goto Top
Ja entschuldige war gestern schon etwas spät :P

Also ich poste mal meine Batch für den Persönlichen Ordner anlegen:

@echo off
set NWL=P
set Verzeichnis=Schueler
set IP=XXX.XXX.X.XXX

:s1
set /p jahrgang="Bitte Jahrgang eingeben:"
if not exist == "\\%IP%\%Verzeichnis%\%jahrgang%" echo nicht vorhanden! & goto s1
:s2
set /p schuelername="Bitte Namen eingeben:"
if not exist == "\\%IP%\%Verzeichnis%\%jahrgang%\%schuelername%" echo Schueler nicht vorhanden !! & goto s2
net use %NWL%: "\\%IP%\%Verzeichnis%\%jahrgang%\%schuelername%" * /user:%schuelername% /persistent:no

pause


Damit verbindet man sich als anderer User sein persönliches Netzlaufwerk.

Die Batch die du geschrieben hast, soll aber auf jeden Arbeitsplatz ausgeführt werden und wenn dort ein NET USER Befehl kommt legt er meines wissens ein neues Benutzerkonto unter XP an.

Vielen Dank schonmal face-smile
Mitglied: Logan000
Logan000 16.08.2011 um 09:12:06 Uhr
Goto Top
Moin Moin

Wenn du Code Postest, sei doch bitte so gut und verwende die Code Tags aus der .

... und wenn dort ein NET USER Befehl kommt legt er meines Wissens ein neues Benutzerkonto ... an.
Ohne den Parameter /Add wird kein Konto angelegt. Schau mal hier: http://support.microsoft.com/kb/251394/de

Ich verstehe zwar nicht warum ihr "doppelte" Benutzerkonten pflegt, aber wenn du TIMOs Ansatz in dein Skript einbaust sollte dein Problem gelöst sein (zumindest dieses).

Gruß L.
Mitglied: customcore
customcore 16.08.2011 um 12:01:49 Uhr
Goto Top
Ich habe die Batch ausgeführt von Timo.

Einerseits auf der Workstation und auf dem Server.

Bei der Workstation sagte er mir Benutzer nicht gefunden. Ich habe versucht dahinter noch /Domäne zu machen "Net user %username% %PASS% /Domäne >nul" mit demselben ergebnis. HELPMSG 2221.

Auf dem Server ausgeführt und sie da: Es klappt !

Ich will aber in meine Batch das so machen, der Schüler meldet sich an seiem Netzlaufwerk an, wird dann nach einem neuen Kennwort gefragt und dann soll die Abfrage nicht mehr kommen, da er es nur einmal ändern darf.

Man kann das ganze auch in eine Excel Tabelle sammeln und dann einspielen, aber es soll lieber auf dem Arbeitsplatz per Hand angelegt werden. Auf einem Arbeitsplatz melden sich auch Unterschiedliche Schüler an, logisch ist ja nicht nur 1 Klasse drin.

Also kurzform: PC anmachen, als zB User1 anmelden an der Workstation, dann öffnet sich die .bat die ich oben gepostet hab, dort Jahrgang, Name und PW eingeben. Netzlaufwerk wird verbunden. Dann soll ein PW Reset erfolgen. Jeder Schüler darf es nur einmal ändern. Könnte man mit einer Abfrage J/N machen ist aber lästig. Lieber sowas wie ist PW=1234 oder Leer wie von Timo eben dann soll neues PW eingeben falls nicht dann exit.

Also wir melden uns am PC mit anderen Anmeldedaten an wie beim Netzlaufwerk.

Ich weiss sehr kompliziert und doppelte Pflege eigentlich sh*t !
Mitglied: Logan000
Logan000 16.08.2011 um 12:53:11 Uhr
Goto Top
Moin

Bei der Workstation sagte er mir Benutzer nicht gefunden. Ich habe versucht dahinter noch /Domäne zu machen "Net user %username% %PASS% /Domäne >nul" mit demselben ergebnis. HELPMSG 2221.

Wenn überhaupt:
Net User Domäne/%Username% %Pass%

Ich habe die Batch ausgeführt von Timo.
Darüberhinaus verwendet TIMOs Codefetzen die Variable %Username% die den Namen den aktuell angemeldeten User beinhaltet.
Du wirst für das was du vorhast also %username% durch deine Variable %schuelername% ersetzen müssen.

Was die mehrfach Ausführung angeht: Wie wilst du das Skript eigentlich starten lassen?
Manuell, durch den Anwender?

Damit verbindet man sich als anderer User sein persönliches Netzlaufwerk
Wie habt ihr das Rechte technisch gelöst?

Gruß L.
Mitglied: customcore
customcore 16.08.2011 um 13:05:23 Uhr
Goto Top
Auch deine Variante mit Domäne habe ich versucht ohne Erfolg. Habe gerade gelesen, dass man die Datei als Admin ausführen muss um etwas ändern zu können.

Richtig habe ich beachtet mit username und schuelername.

Rechte technisch läuft das so:

Jeder Schüler hat seinen eigenen Ordner, in dem nur Administratoren, Lehrer und der jeweilige Schüler selbst Vollzugriff haben. Und das die PC-User (Anmeldung an Workstation) lesen können. Mehr Rechte sind nicht enthalten.

lg
Mitglied: customcore
customcore 17.08.2011 um 14:52:09 Uhr
Goto Top
So ich habe mich nach Alternativen umgehört. Stimmt es das man ein Dienst für Domäncontrolleradmins starten kann? Mir kam auch die Idee mit Run As aber der Schüler sollte ungerne das Admin-PW sehen. Es kann ja immer mal sein das ein paar schlaue Schüler dabei sind :P Oder ebend einen Scheduled Task anlegen. Wären das Alternativen ?

lg
Mitglied: 60730
60730 18.08.2011 um 20:54:42 Uhr
Goto Top
moin,

Auf dem Server ausgeführt und sie da: Es klappt !

siehe da, der Timo hat in der Eile einen groben Denkfehler fabriziert und kommuniziert...

Habe gerade gelesen, dass man die Datei als Admin ausführen muss um etwas ändern zu können.

Yupp - von daher ein weiterer ungetesteter Schnellschuss wäre...

  • Ordner mit Freigabe auf dem Server anlegen, wo jeder das recht hat eine Datei zu erstellen, aber keine Leserechte auf die Ordnerstruktur hat.
sollte via Dateien erstellen, Daten schreiben schon funktionieren

Die oben skizzierte Zeile 5 in etwa so abändern...
if not "%PASS%"=="" IF not "%PASS%"=="1234" Net user %username% %PASS% /Domain>\\server\freigabe\%random%%random%%random%%random%.cmd

Und dann auf dem Server eine Schleife bauen, die als Admin \\server\freigabe\ nach cmd abklappert, ausführt und die cmd löscht/verschiebt.

Aber das ist nicht nur ungetstetet aus dem Bauch auch nicht wirklich Wasserdicht und hybsch.

Gruß
Mitglied: customcore
customcore 24.08.2011 um 11:36:09 Uhr
Goto Top
So das hat gut geklappt mit dem Anlegen. Nun benötige ich noch Hilfe mit der Schleife basteln. Also er soll abklappern und ausführen und dann soll er löschen bzw. verschieben.

Danke!