Jump to content

Problem mit dsadd user und Homeverzeichnis


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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....

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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. :)

Link zu diesem Kommentar

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

Link zu diesem Kommentar
: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

Link zu diesem Kommentar
: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

Link zu diesem Kommentar

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......

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...