Probleme mit vbs zum erstellen von Usern
Hi erstma,
also ich hab eigentlich kein schimmer von scipten aber etwas belesen, copy&pase und nach dem 5 Testdurchlauf hab ich solche probleme meisten shinbekommen... aber nun weiß ich nicht mehr weiter.
Diese Script findet man sehr oft im Netz. Mit unterschidelichsten Ausbaustufen. Und mein script funktioniert soweit eigentlich auch. Die Benutzer werden alle wie gewollt erstellt. Aber die übergabe an "verz.cmd" funktioniert nicht. Hier erstma das script:
benutzer_anegen.txt
verz.cmd
Also, wie gesagt: Die benutzer werden erstellt (wenn ich "verz.cmd" nicht einbinde). Und die cmd funktioniert alleine auch... erstellt halt aber nur einen Ordner. Aber wenn ich "verz.cmd" einbinde, bekomme ich die Fehlermeldung: "Das System kann die angegebene Datei nicht finden:" und verweist auf die vorletzte Zeile.
Hab keine Idee warum das so ist. Jemand ne Idee?
btw: Falls ihr noch andere Fehler findet bzw. andere Lösungen habt... nur zu ;)
[Edit Biber] Codeformatierung [/Edit]
also ich hab eigentlich kein schimmer von scipten aber etwas belesen, copy&pase und nach dem 5 Testdurchlauf hab ich solche probleme meisten shinbekommen... aber nun weiß ich nicht mehr weiter.
Diese Script findet man sehr oft im Netz. Mit unterschidelichsten Ausbaustufen. Und mein script funktioniert soweit eigentlich auch. Die Benutzer werden alle wie gewollt erstellt. Aber die übergabe an "verz.cmd" funktioniert nicht. Hier erstma das script:
benutzer_anegen.txt
Dim fso, f, Zeile, Feld
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile ("schueler.txt",1,0)
Do while not f.AtEndOfLine
Zeile = f.readLine
Feld = split(Zeile,",")
Benutzer = Feld(1)
Vorname = Feld(0)
Nachname = Feld(1)
Passwort = Feld(2)
accountname = left(Vorname,3) & "." & Benutzer
Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort)
Loop
f.Close
Wscript.Quit(0)
Sub BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort)
Dim ouo, b
Set ouo = GetObject("LDAP://OU=Klassen,OU=Zöschen,DC=zoeschen,DC=local")
Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname)
Dim WshShell, ret
Set WshShell = WScript.CreateObject("WScript.Shell")
b.Put "sAMAccountName", accountname
b.Put "displayName", Vorname & " " & Nachname
b.Put "givenName", Vorname
b.Put "sn", Nachname
b.Put "description", "Schüler"
b.Put "userAccountControl", 66082
b.Put "profilePath", "\\winsrv08R2-DC\Schueler$\" & accountname
b.Put "homeDirectory", "\\winsrv08R2-DC\Schueler_H$\" & accountname
b.Put "homeDrive", "H:"
b.TerminalServicesProfilePath = "\\winsrv08R2-DC\Schueler$\" & accountname
b.TerminalServicesHomeDirectory = "\\winsrv08R2-DC\Schueler_H$\" & accountname
b.TerminalServicesHomeDrive = "H:"
b.SetInfo
b.SetPassword Passwort
b.AccountDisabled = False
b.SetInfo
WScript.Sleep(1000)
ret = WshShell.Run ("verz.cmd" & accountname,0,1)
verz.cmd
mkdir \\winsrv08R2-DC\Schueler$\%1$
echo J | cacls \\winsrv08R2-DC\Schueler$\%1$ /C /E /G Administratoren:F
echo J | cacls \\winsrv08R2-DC\Schueler$\%1$ /C /E /G domaene\%1:F
echo J | cacls \\winsrv08R2-DC\Schueler$\%1$ /C /E /G Lehrer:F
echo J | cacls \\winsrv08R2-DC\Schueler$\%1$ /C /E /R Jeder
mkdir \\winsrv08R2-DC\Schueler_H$\%1$
echo J | cacls \\winsrv08R2-DC\Schueler_H$\%1$ /C /E /G Administratoren:F
echo J | cacls \\winsrv08R2-DC\Schueler_H$\%1$ /C /E /G domaene\%1:F
echo J | cacls \\winsrv08R2-DC\Schueler_H$\%1$ /C /E /G Lehrer:F
echo J | cacls \\winsrv08R2-DC\Schueler_H$\%1$ /C /E /R Jeder
Also, wie gesagt: Die benutzer werden erstellt (wenn ich "verz.cmd" nicht einbinde). Und die cmd funktioniert alleine auch... erstellt halt aber nur einen Ordner. Aber wenn ich "verz.cmd" einbinde, bekomme ich die Fehlermeldung: "Das System kann die angegebene Datei nicht finden:" und verweist auf die vorletzte Zeile.
Hab keine Idee warum das so ist. Jemand ne Idee?
btw: Falls ihr noch andere Fehler findet bzw. andere Lösungen habt... nur zu ;)
[Edit Biber] Codeformatierung [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 183238
Url: https://administrator.de/forum/probleme-mit-vbs-zum-erstellen-von-usern-183238.html
Ausgedruckt am: 22.04.2025 um 15:04 Uhr
15 Kommentare
Neuester Kommentar
Moin Bammboole,
willkommen im Forum.
Hast du schon mal versucht, in der Zeile 41 des VBS.Schnipsels ein Leerzeichen zwischen dem CMD-Dateinamen und dem 1. Parameter einzufügen?
Außerdem muss der CMD-Krams auch im Verzeichnis sein, aus dem der VBS-Schnipsel gestartet wird, solange du ihn ohne Pfadangabe aufrufst.
Andernfalls käme eine Meldung wie "Das System kann die angegebene Datei nicht finden:"
Grüße
Biber
willkommen im Forum.
Hast du schon mal versucht, in der Zeile 41 des VBS.Schnipsels ein Leerzeichen zwischen dem CMD-Dateinamen und dem 1. Parameter einzufügen?
ret = WshShell.Run ("verz.cmd " & accountname,0,1)
Außerdem muss der CMD-Krams auch im Verzeichnis sein, aus dem der VBS-Schnipsel gestartet wird, solange du ihn ohne Pfadangabe aufrufst.
Andernfalls käme eine Meldung wie "Das System kann die angegebene Datei nicht finden:"
Grüße
Biber

Hi,
vermutlich stört das $-Zeichen hinter dem Benutzernamen (%1$)
Um deine an Biber gestellte Frage zu beantworten:
http://ss64.com/vb/run.html
Gruß
Edit: Formulierung geändert.
vermutlich stört das $-Zeichen hinter dem Benutzernamen (%1$)
Um deine an Biber gestellte Frage zu beantworten:
http://ss64.com/vb/run.html
Gruß
Edit: Formulierung geändert.
Hallo @all und willkommen im Forum, Bammboole!
Biber hat natürlich mit dem fehlenden Leerzeichen recht - und zum Testen würde ich ohnehin nur
verwenden - noch "
BTW: Leerzeichen im "accountname" gibt's ja wohl hoffentlich nicht ...
@106009
Wie lautet übrigens dann die Antwort auf Bibers Frage?
[OT]

Wer wohl dieses Osterei da versteckt hat?
[/OT]
Grüße
bastla
Biber hat natürlich mit dem fehlenden Leerzeichen recht - und zum Testen würde ich ohnehin nur
ret = WshShell.Run("verz.cmd " & accountname, 1, 1)
pause
" an das Ende des Batches, und dann lässt sich auch eher ablesen, wo es klemmt ...btw.: Damit ich nich Dumm sterbe... was bedeutet das mit ,0,1 nach dem Übergabewert? Hab das nur so Übernommen.
Die 0 steht für "Fenster verstecken" (würde ich, wie gesagt, speziell in der Testphase nicht verwenden) und die 1 für "Warte auf das Ende des Batches" ...BTW: Leerzeichen im "accountname" gibt's ja wohl hoffentlich nicht ...
@106009
vermutlich stört das $-Zeichen hinter dem Benutzernamen (%1$)
Eher nicht ...Wie lautet übrigens dann die Antwort auf Bibers Frage?
[OT]
Diese Script findet man sehr oft im Netz.
Oh ja, und ich finde es jedes Mal aufs Neue lustig, wenn ich "Sub BenuntzerAnlegen" lese ... Wer wohl dieses Osterei da versteckt hat?
[/OT]
Grüße
bastla

Zitat von @bastla:
@106009
> vermutlich stört das $-Zeichen hinter dem Benutzernamen (%1$)
Eher nicht ...
@106009
> vermutlich stört das $-Zeichen hinter dem Benutzernamen (%1$)
Eher nicht ...
Ich hab's lokal (ohne Rechnernamen) probiert, da stört das Zeichen definitiv. Meldet sich der neue Benutzer an, wird der Profilpfad nicht gefunden und ein neuer ohne das $-Zeichen angelegt, ergo kann calcs nicht funktionieren: "Das System kann die angegebene Datei nicht finden."
Wie lautet übrigens dann die Antwort auf Bibers Frage?
Ich habe an Biber nichts zu antworten, aber um Missverständnisse auszuräumen, den Beitrag editiert :-PGruß

@bastla
Das hat er aber anders beschrieben:
Und genau das kann ich hier mit cacls reproduzieren, inzwischen auch mit 'ner Freigabe incl. Computernamen probiert.
Ohne das $-Zeichen funktioniert es wie es soll.
Da ich aber keinen Server zur Verfügung habe, an dem ich es real ausprobieren kann, klinke ich mich hier aus.
Gruß
Das hat er aber anders beschrieben:
Zitat von @Bammboole:
Die benutzer werden erstellt (wenn ich "verz.cmd" nicht einbinde). Und die cmd funktioniert alleine
auch... erstellt halt aber nur einen Ordner. Aber wenn ich "verz.cmd" einbinde, bekomme ich die Fehlermeldung: "Das
System kann die angegebene Datei nicht finden:
Die benutzer werden erstellt (wenn ich "verz.cmd" nicht einbinde). Und die cmd funktioniert alleine
auch... erstellt halt aber nur einen Ordner. Aber wenn ich "verz.cmd" einbinde, bekomme ich die Fehlermeldung: "Das
System kann die angegebene Datei nicht finden:
Und genau das kann ich hier mit cacls reproduzieren, inzwischen auch mit 'ner Freigabe incl. Computernamen probiert.
Ohne das $-Zeichen funktioniert es wie es soll.
Da ich aber keinen Server zur Verfügung habe, an dem ich es real ausprobieren kann, klinke ich mich hier aus.
Gruß
Hallo Bammboole!
am Ende des Batches versucht? Poste doch mal, was im CMD-Fenster (an Meldungen) angezeigt wird ...
Grüße
bastla
Aber warum wird ein neuer Profilordner erstellt mit .V2 am ende.
Ist bereits seit Vista so ...Und ist ein fehler bei den cacls befehlen? Den die da funktioniert nicht so wirklich.
Ich sehen keinen Fehler - hast Du es schon mit der zusätzlichen Zeilepause
Grüße
bastla
Hallo Bammboole!
Lass versuchsweise mal "domaene\" weg:
(an
) ...
Grüße
bastla
Lass versuchsweise mal "domaene\" weg:
echo J | cacls \\winsrv08R2-DC\Schueler$\%1$ /C /E /G %1:F
Es peilt zwar keiner das die es an ihr Domain anpassen müssen
wird's ja sicher nicht gelegen sein Und kann man das mit V2 am ende abschalten
Abschalten ist nicht, aber Du kannst ja den Pfad anpassen:b.Put "profilePath", "\\winsrv08R2-DC\Schueler$\" & accountname & ".V2"
bastla
Nachtrag (weil nochmal genauer drübergeschaut
):
Wenn Du die Ordner jeweils mit "$" am Ende erstellen willst, musst Du das natürlich auch schon im VBScript so machen - daher wäre die Zeile richtig so zu schreiben:
bzw auch
Und nur der Ordnung halber: Für den Profilpfad muss dann natürlich auch im Batch ".V2" hinzugefügt werden, also:
wobei sich für den Pfad eine Variable anböte:
Grüße
bastla
Wenn Du die Ordner jeweils mit "$" am Ende erstellen willst, musst Du das natürlich auch schon im VBScript so machen - daher wäre die Zeile richtig so zu schreiben:
b.Put "profilePath", "\\winsrv08R2-DC\Schueler$\" & accountname & "$.V2"
b.Put "homeDirectory", "\\winsrv08R2-DC\Schueler_H$\" & accountname & "$"
md "\\winsrv08R2-DC\Schueler$\%1$.V2"
echo J | cacls "\\winsrv08R2-DC\Schueler$\%1$.V2" /C /E /G Administratoren:F
...
set "ProfilePath=\\winsrv08R2-DC\Schueler$\%1$.V2"
md "%ProfilePath%"
echo J | cacls "%ProfilePath%" /C /E /G Administratoren:F
...
bastla