ich stelle mal eine Batch in mehreren Abschnitten ein.
Code:
@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
: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
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.
Im AD steht zwar alles drin, aber auch das AD (bzw. Betriebssystem) erzeugt keine Ordner!
Das macht in diesem Fall z.B. das entspr. SnapIn, über das man einen User anlegt.
Genau dieser Meinung vertrat auch der Heimwerker, der an einer Betonmauer eine Türklinke befestigte und sich wunderte warum er trotzdem immer mit dem Kopf gegen die Wand rannte.
Schließlich befindet sich doch an jeder Türklinke auch ein Tür
....Ihr habt mich aber immer noch nicht überzeugt, ....Ich weiß ich bin stur......
Niemand hier will (dich) überzeugen, wir missionieren nicht; wir geben Rat, geben unser Wissen und unsere Erkenntnis weiter. Wir therapieren auch keine Beratungsresistenz.