rolando2410 10 Geschrieben 4. März 2010 Melden Teilen Geschrieben 4. März 2010 Servus, ich hab ms server 2008 aufgesetzt, domäne eingerichtet, Ordner für Profile und Homeverzeichnisse erstellt, freigegeben und Rechte so vergeben, das alles perfekt funktioniert, solange ich im AD einen Benutzer per Hand erstelle. Da ich aber mehrere Benutzer einlesen will, habe ich mir eine kleine Batch-Datei geschrieben, die mir einen Benutzer mit Profilpfad, Loginsript und Homeverzeichnis erstellt. Diese funktioniert auch einwandfrei. Der Benutzer erscheint im AD an der richtigen Stelle. Die Einstellungen in Konto und Profil sind auch so, wie ich sie per Hand einstelle. Jetzt das Problem: Erstelle ich den Benutzer per Hand, wird das Homeverzeichnis erstellt, lese ich ihn per Batchdatei ein, geht es nicht. Vielen Dank für die hoffentlich zahlreichen Anregungen! Hier meine Batchdatei: @echo off rem AD-Struktur: Anwender\Lehrer rem Einstellungen set server=\\192.168.100.200 set dc1=schule set dc2=local set profilpfad=\Profile\Lehrer\ set profil=Standardprofil set loginscript=login.bat set homelaufwerk=z: set homepfad=\Home\Lehrer\ rem Erstellen dsadd User "CN=%1,OU=Lehrer,OU=Anwender,DC=%dc1%,DC=%dc2% " -hmdir %server%%homepfad%%1 -profile %server%%profilpfad%%profil% -hmdrv %homelaufwerk% -loscr %loginscript% -upn %1 -pwd %2 -samid %1 -display %1 -mustchpwd yes -canchpwd yes -reversiblepwd no -pwdneverexpires no -disabled no Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 4. März 2010 Melden Teilen Geschrieben 4. März 2010 Hallo und Willkommen, dsadd legt m.W. kein Verzeichnis an. D.h. das müsstest Du schon in der Batchdatei mit erledigen. Mittels "md" Verzeichnis anlegen und mit "xcacls" entsprechende Berechtigungen setzen. Alternativ würde sich anbieten, das Ganze mit Powershell zu machen. Zitieren Link zu diesem Kommentar
rolando2410 10 Geschrieben 4. März 2010 Autor Melden Teilen Geschrieben 4. März 2010 Das Verzeichnis legt doch der server selbst an, wenn im Basisordner = Homeverzeichnis der Pfad steht. bei dsadd user macht das der Parameter -hmdir %server%%homepfad%%1 und mappt es selbst mit -hmdrv %homelaufwerk% Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 4. März 2010 Melden Teilen Geschrieben 4. März 2010 D.h. wenn Du dsadd vom Prompt ausführst mit entspr. Parametern, wird bei dir ein Verzeichnis angelegt? Und nur per Batch nicht? Wie gesagt: Ich bin der Meinung, dsadd legt kein Verzeichnis an... Das AD-Benutzer und Computer Snap-In arbeitet eben anders als dsadd. Zitieren Link zu diesem Kommentar
rolando2410 10 Geschrieben 4. März 2010 Autor Melden Teilen Geschrieben 4. März 2010 Richtig! Rechtsklick im Active Directory - neu - Benutzer - im Konto z: als Laufwerksbuchstabe und im Basisordner \\ip server\Anwender\Lehrer\DrSpecht Dann legt der Server selbst unter dem angegebenen Pfad den Ordner DrSpecht an und mappt in auf z: Ist Standard und kein Geheimnis und nicht das Problem. Das Problem ist, dass mein dsadd user genau das ins Konto schreibt, aber dann funktioniert es nicht, per Hand schon.... Zitieren Link zu diesem Kommentar
rolando2410 10 Geschrieben 4. März 2010 Autor Melden Teilen Geschrieben 4. März 2010 dsadd legt natürlich kein Verzeichnis an, sonder schreibt nur in Active Directory Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 4. März 2010 Melden Teilen Geschrieben 4. März 2010 OK, und wo ist jetzt noch das Problem? Wie gesagt: Verzeichnis in Batch per md anlegen und gut. Zitieren Link zu diesem Kommentar
rolando2410 10 Geschrieben 4. März 2010 Autor Melden Teilen Geschrieben 4. März 2010 Man könnte in der Batch per md die Verzeichnisse anlegen und dann im login-script mappen. Nur ist dann der Ersteller - Besitzer nicht der User und somit wirds mit den Rechten ein Problem, wenn man haben will, das nur der User Zugriff auf sein Home haben soll. Übrigens kann die Lösung eines Problems nicht sein, dass man das Problem umgeht und verdrängt. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 4. März 2010 Melden Teilen Geschrieben 4. März 2010 Entweder reden wir aneinander vorbei, oder ich versteh was falsch... Dass dsadd die von Dir gewünschte Funktion eben einfach nicht hat, hat nix mit Problem umgehen zu tun. Im Loginscript müssen die Laufwerke nicht gemappt werden. Nur das md vor dem dsadd ausführen. Und, wie oben erwähnt, kannst Du die Berechtigungen mit xcalcs setzen. Oder das Ganze, wie ebenfalls schon erwähnt, mit Powershell scripten. Zitieren Link zu diesem Kommentar
XP-Fan 217 Geschrieben 4. März 2010 Melden Teilen Geschrieben 4. März 2010 Hi, Übrigens kann die Lösung eines Problems nicht sein, dass man das Problem umgeht und verdrängt. der Ansatz "mit dem Kopf durch die Wand" bringt dich aber auch nicht weiter. Was spricht gegen den Vorschlag von Cybquest ? Erst das Verzeichnis erstellen und dann entsprechend die Berechtigungen erteilen. Das Ganze kannst du in einem Script handeln und du hast dein Ziel erreicht. :) Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 5. März 2010 Melden Teilen Geschrieben 5. März 2010 Hallo, ich stelle mal eine Batch in mehreren Abschnitten ein. @echo off color 70 c: cd\ set filename=%1 set filename=%filename:"=% set EduGroup=%filename:~15,-4% for /f "tokens=1 delims=\" %%i in ("%EduGroup%") do set Edu=%%i for /f "tokens=2 delims=\" %%i in ("%EduGroup%") do set Group=%%i set domain=DC=Lubeca,DC=local :create OU for Education dsadd OU "OU=%Edu%,%domain%" :create OU for Group dsadd OU "OU=%Group%,OU=%Edu%,%domain%" :create sec Group for Education dsadd Group "CN=%Edu%,OU=%Edu%,%domain%" :create sec Group for user dsadd Group "CN=%Group%,OU=%Group%,OU=%Edu%,%domain%" dsmod group "CN=%Edu%,OU=%Edu%,%domain%" -addmbr "CN=%Group%,OU=%Group%,OU=%Edu%,%domain%" set ProfilDrive=e: set HomeDrive=e: :GroupHome set GroupHome=%HomeDrive%\%Edu%\%Group% if not exist %GroupHome% md %GroupHome% net share %Group%=%GroupHome% /grant:Jeder,full /cache:none cacls %GroupHome% /e /g %Group%:f cacls %GroupHome% /e /g Dozenten:f rem pause if not exist %GroupHome%\1Aufgaben md %GroupHome%\1Aufgaben cacls %GroupHome%\1Aufgaben /e /r %Group% cacls %GroupHome%\1Aufgaben /e /g %Group%:r cacls %GroupHome%\1Aufgaben /e /g Dozenten:f rem pause if not exist %GroupHome%\1Austausch md %GroupHome%\1Austausch cacls %GroupHome%\1Austausch /e /g %Group%:f cacls %GroupHome%\1Austausch /e /g Dozenten:f rem pause :loop set /a skip+=1 echo %skip% call :testeof call :works goto loop :testeof for /f "tokens=1 skip=%skip% delims=;" %%a in (%filename%) do set end=%%a & goto out :out if %end% equ Listend pause & exit goto :eof Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 5. März 2010 Melden Teilen Geschrieben 5. März 2010 :works call :fetchline call :CreateCanditateName call :CreateUserFolder call :CreateUser call :Credentials rem pause goto :eof :fetchline for /f "tokens=1-3 skip=%skip% delims=;- " %%a in (%filename%) do ( set firstname=%%a set surname=%%b set password=%%c rem pause goto :eof ) :CreateCanditateName set firstname=%firstname:ß=ss% set firstname=%firstname:ä=ae% set firstname=%firstname:ü=ue% set firstname=%firstname:ö=oe% set firstname=%firstname:Ä=Ae% set firstname=%firstname:Ü=Ue% set firstname=%firstname:Ö=Oe% set firstname=%firstname: =% set surname=%surname:ß=ss% set surname=%surname:ä=ae% set surname=%surname:ü=ue% set surname=%surname:ö=oe% set surname=%surname:Ä=Ae% set surname=%surname:Ü=Ue% set surname=%surname:Ö=Oe% set surname=%surname: =% set password=%password:ß=ss% set password=%password:ä=ae% set password=%password:ü=ue% set password=%password:ö=oe% set password=%password:Ä=Ae% set password=%password:Ü=Ue% set password=%password:Ö=oe% set username=%surname%%firstname:~0,1% set Candidate=%username: =% set password=%password: =% set password=%firstname% rem for /f "tokens=*" %%a in ('dsquery user -name %candidate% -o rdn') do if %%~a equ %candidate% set candidate=%candidate%1 set candidate=%candidate: =% rem echo %candidate% rem pause goto :eof Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 5. März 2010 Melden Teilen Geschrieben 5. März 2010 :CreateUserFolder set UserProfil=%ProfilDrive%\%Edu%\%Group%\%Candidate%Profil set UserHome=%HomeDrive%\%Edu%\%Group%\%Candidate%Home if not exist %UserProfil% md %UserProfil% if not exist %UserHome% md %UserHome% rem pause goto :eof :CreateUser set UserString=CN=%Candidate%,OU=%Group%,OU=%Edu%,%domain% dsadd user %UserString% dsmod user %UserString% -pwd %password% dsmod user %UserString% -fn %firstname% dsmod user %UserString% -ln %surname% dsmod user %UserString% -display %surname%,%firstname% dsmod user %UserString% -disabled no dsmod user %UserString% -pwdneverexpires yes dsmod user %UserString% -profile \\%computername%\%Group%\%Candidate%Profil dsmod user %UserString% -loscr login dsmod user %UserString% -hmdir "" dsmod user %UserString% -hmdrv "" dsmod user %UserString% -canchpwd yes dsmod user %UserString% -mustchpwd yes set SecGroupString="CN=%Group%,OU=%Group%,OU=%Edu%,%domain%" dsmod group %SecGroupString% -addmbr %UserString% rem pause goto :eof :Credentials cacls %UserProfil% /e /g %Candidate%:f cacls %UserHome% /e /g %Candidate%:f cacls %UserProfil%\* /e /g %Candidate%:f cacls %UserHome%\* /e /g %Candidate%:f cacls %UserProfil% /e /g Dozenten:f cacls %UserHome% /e /g Dozenten:f cacls %UserProfil%\* /e /g Dozenten:f cacls %UserHome%\* /e /g Dozenten:f cacls %UserProfil% /e /r %Group% cacls %UserHome% /e /r %Group% cacls %UserProfil%\* /e /r %Group% cacls %UserHome%\* /e /r %Group% cacls %UserProfil% /e /r ZimmerT cacls %UserHome% /e /r ZimmerT cacls %UserProfil%\* /e /r ZimmerT cacls %UserHome%\* /e /r ZimmerT cacls %UserProfil% /e /r GiesenbergR cacls %UserHome% /e /r GiesenbergR cacls %UserProfil%\* /e /r GiesenbergR cacls %UserHome%\* /e /r GiesenbergR cacls %UserProfil% /e /r Jeder cacls %UserHome% /e /r Jeder subinacl /subdirectories %UserProfil% /setowner=%Candidate% subinacl /subdirectories %UserHome% /setowner=%Candidate% rem pause goto :eof Zitieren Link zu diesem Kommentar
NorbertFe 2.034 Geschrieben 5. März 2010 Melden Teilen Geschrieben 5. März 2010 Übrigens kann die Lösung eines Problems nicht sein, dass man das Problem umgeht und verdrängt. Wenn man das falsche Werkzeug benutzt ist aber genau das die einzige Lösung. ;) Bye Norbert Zitieren Link zu diesem Kommentar
rolando2410 10 Geschrieben 5. März 2010 Autor Melden Teilen Geschrieben 5. März 2010 Erstmal vielen Dank für die zahlreichen Antworten! Ihr habt mich aber immer noch nicht überzeugt, dass dsadd user das falsche Werkzeug ist, denn worin sollte der Unterschied liegen, ob der user per Hand oder Kommandozeile erzeugt wird? Hauptsache er steht mit den richtigen Einstellungen im AD, den Rest erledigt das Betriebssystem. Also muss in meiner Befehlszeile der Fehler liegen. Ich weiß ich bin stur...... Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.