Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Probleme mit vbs zum erstellen von Usern

Frage Microsoft Windows Userverwaltung

Mitglied: Bammboole

Bammboole (Level 1) - Jetzt verbinden

07.04.2012, aktualisiert 20:31 Uhr, 3074 Aufrufe, 15 Kommentare

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
01.
Dim fso, f, Zeile, Feld 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Set f = fso.OpenTextFile ("schueler.txt",1,0) 
04.
 
05.
Do while not f.AtEndOfLine 
06.
Zeile = f.readLine 
07.
Feld = split(Zeile,",") 
08.
Benutzer = Feld(1) 
09.
Vorname = Feld(0) 
10.
Nachname = Feld(1) 
11.
Passwort = Feld(2) 
12.
accountname = left(Vorname,3) & "." & Benutzer 
13.
Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort) 
14.
Loop 
15.
f.Close 
16.
Wscript.Quit(0) 
17.
 
18.
Sub BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort) 
19.
Dim ouo, b 
20.
Set ouo = GetObject("LDAP://OU=Klassen,OU=Zöschen,DC=zoeschen,DC=local") 
21.
Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname) 
22.
Dim WshShell, ret 
23.
Set WshShell = WScript.CreateObject("WScript.Shell") 
24.
b.Put "sAMAccountName", accountname 
25.
b.Put "displayName", Vorname & " " & Nachname 
26.
b.Put "givenName", Vorname 
27.
b.Put "sn", Nachname 
28.
b.Put "description", "Schüler" 
29.
b.Put "userAccountControl", 66082 
30.
b.Put "profilePath", "\\winsrv08R2-DC\Schueler$\" & accountname 
31.
b.Put "homeDirectory", "\\winsrv08R2-DC\Schueler_H$\" & accountname 
32.
b.Put "homeDrive", "H:" 
33.
b.TerminalServicesProfilePath = "\\winsrv08R2-DC\Schueler$\" & accountname 
34.
b.TerminalServicesHomeDirectory = "\\winsrv08R2-DC\Schueler_H$\" & accountname 
35.
b.TerminalServicesHomeDrive = "H:" 
36.
b.SetInfo 
37.
b.SetPassword Passwort 
38.
b.AccountDisabled = False 
39.
b.SetInfo 
40.
WScript.Sleep(1000) 
41.
ret = WshShell.Run ("verz.cmd" & accountname,0,1) 
verz.cmd
01.
mkdir \\winsrv08R2-DC\Schueler$\%1$ 
02.
echo J | cacls \\winsrv08R2-DC\Schueler$\%1$ /C /E /G Administratoren:F 
03.
echo J | cacls \\winsrv08R2-DC\Schueler$\%1$ /C /E /G domaene\%1:F 
04.
echo J | cacls \\winsrv08R2-DC\Schueler$\%1$ /C /E /G Lehrer:F 
05.
echo J | cacls \\winsrv08R2-DC\Schueler$\%1$ /C /E /R Jeder 
06.
mkdir \\winsrv08R2-DC\Schueler_H$\%1$ 
07.
echo J | cacls \\winsrv08R2-DC\Schueler_H$\%1$ /C /E /G Administratoren:F 
08.
echo J | cacls \\winsrv08R2-DC\Schueler_H$\%1$ /C /E /G domaene\%1:F 
09.
echo J | cacls \\winsrv08R2-DC\Schueler_H$\%1$ /C /E /G Lehrer:F 
10.
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]
Mitglied: Biber
07.04.2012 um 20:38 Uhr
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?
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
Bitte warten ..
Mitglied: Bammboole
07.04.2012 um 21:43 Uhr
Hi,

und Danke erstma das einer Antwortet ;)

Also alle drei Datein liegen im root von C. Hatte auch schon probiert den pfad anzugeben, hat aber auch nix gebracht.
Was mich halt wundert.... Dieses Script fliegt halt in tausend Foren rum und scheinbar hatte diesen fehler noch nie einer . Es peilt zwar keiner das die es an ihr Domain anpassen müssen aber das mit der drecks verz.cmd scheint bei allen zu klappen.....

Was du jetzt mit dem Leerzeichen meinst? Da is doch eins ;)
btw.: Damit ich nich Dumm sterbe... was bedeutet das mit ,0,1 nach dem Übergabewert? Hab das nur so Übernommen.
Bitte warten ..
Mitglied: 106009
07.04.2012 um 22:05 Uhr
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.
Bitte warten ..
Mitglied: bastla
07.04.2012 um 23:13 Uhr
Hallo @All und willkommen im Forum, Bammboole!

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)
verwenden - noch "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
Bitte warten ..
Mitglied: 106009
07.04.2012 um 23:31 Uhr
Zitat von bastla:
@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 :-P

Gruß
Bitte warten ..
Mitglied: bastla
07.04.2012 um 23:35 Uhr
@106009
Meldet sich der neue Benutzer an, wird der Profilpfad nicht gefunden
Der TE hat doch das Problem schon beim Anlegen des Benutzers - von Anmeldung ist da noch überhaupt nicht die Rede (und "cacls" würde ohnehin nicht der neue Benutzer ausführen)...

Grüße
bastla

P.S.: Editieren kann ich auch ...
Bitte warten ..
Mitglied: Bammboole
07.04.2012 um 23:48 Uhr
OK nice... dat funkt schon ma. DANKE!!!
Ein verdammtes Leerzeichen ,man, man, man ;)

Aber... ein neus/weiters Problem aufgetaucht.

Die ordner werden zwar erstellt (allerdings mit nem $ hinterm namen) aber die Rechtezuordnung wird scheinbar nicht richtig (wenn Überhaupt) durchgefürt. Denn der neue Benutzer steht nicht drin.
Zudem wird, soblad ich mit mit dem Testaccount am TS anmelde, einer neuer Profilordner erstellt der dann zb. tes.test.v2 heißt. Wo dann kein Besitzer drin ist und ich als Admin keine rechte habe. Und das wird dem Lehrer der das dann nutzen will sicher nicht gefallen.

Das soll nicht so sein. Oder?
Bitte warten ..
Mitglied: 106009
07.04.2012 um 23:49 Uhr
@bastla
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:

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ß
Bitte warten ..
Mitglied: bastla
07.04.2012 um 23:55 Uhr
@106009
Interpretationssache - für mich wurde das Script ohne und mit Aufruf der "verz.cmd" getestet ("wenn ich "verz.cmd" nicht einbinde" / "wenn ich "verz.cmd" einbinde") - wissen kann's aber nur der TE ...

Grüße
bastla
Bitte warten ..
Mitglied: Bammboole
07.04.2012 um 23:59 Uhr
Nich streiten ;)

OK, den Fehler mit $ hinter dem Ordnernamen zieh ich zurück... steht ja auch so in cmd... also kein fehler

Aber warum wird ein neuer Profilordner erstellt mit .V2 am ende.
Und ist ein fehler bei den cacls befehlen? Den die da funktioniert nicht so wirklich. Die neuen ordner bekommen die selben Rechte wie der Übergeordnete Freigabeordner.
Bitte warten ..
Mitglied: bastla
08.04.2012 um 00:07 Uhr
Hallo Bammboole!
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 Zeile
pause
am Ende des Batches versucht? Poste doch mal, was im CMD-Fenster (an Meldungen) angezeigt wird ...

Grüße
bastla
Bitte warten ..
Mitglied: Bammboole
08.04.2012 um 00:13 Uhr
hmmm... Also mit Pause. Ausführung von verz.cmd

C:\>mkdir \\winsrv08R2-DC\Schueler$\tes.test

C:\>echo J | cacls \\winsrv08R2-DC\Schueler$\tes.test /C /E /G Administratoren
:F
Bearbeitetes Verzeichnis: \\winsrv08R2-DC\Schueler$\tes.test

C:\>echo J | cacls \\winsrv08R2-DC\Schueler$\tes.test /C /E /G domaene\tes.tes
t:F
Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt.

C:\>echo J | cacls \\winsrv08R2-DC\Schueler$\tes.test /C /E /G Lehrer:F
Bearbeitetes Verzeichnis: \\winsrv08R2-DC\Schueler$\tes.test

C:\>echo J | cacls \\winsrv08R2-DC\Schueler$\tes.test /C /E /R Jeder
Bearbeitetes Verzeichnis: \\winsrv08R2-DC\Schueler$\tes.test

C:\>mkdir \\winsrv08R2-DC\Schueler_H$\tes.test

C:\>echo J | cacls \\winsrv08R2-DC\Schueler_H$\tes.test /C /E /G Administrator
en:F
Bearbeitetes Verzeichnis: \\winsrv08R2-DC\Schueler_H$\tes.test

C:\>echo J | cacls \\winsrv08R2-DC\Schueler_H$\tes.test /C /E /G domaene\tes.t
est:F
Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt.

C:\>echo J | cacls \\winsrv08R2-DC\Schueler_H$\tes.test /C /E /G Lehrer:F
Bearbeitetes Verzeichnis: \\winsrv08R2-DC\Schueler_H$\tes.test

C:\>echo J | cacls \\winsrv08R2-DC\Schueler_H$\tes.test /C /E /R Jeder
Bearbeitetes Verzeichnis: \\winsrv08R2-DC\Schueler_H$\tes.test

C:\>Pause
Drücken Sie eine beliebige Taste . . .

Das sieht nich so gut aus.


Und kann man das mit V2 am ende abschalten oder so umgehen das dann doch die Profildaten in den neuen erstellten ordner landen (am liebsten ohne die Richtlinien anzufassen)?
Bitte warten ..
Mitglied: bastla
08.04.2012 um 00:24 Uhr
Hallo Bammboole!

Lass versuchsweise mal "domaene\" weg:
echo J | cacls \\winsrv08R2-DC\Schueler$\%1$ /C /E /G %1:F
(an
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"
Grüße
bastla
Bitte warten ..
Mitglied: bastla
08.04.2012 um 01:57 Uhr
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:
b.Put "profilePath", "\\winsrv08R2-DC\Schueler$\" & accountname & "$.V2"
bzw auch
b.Put "homeDirectory", "\\winsrv08R2-DC\Schueler_H$\" & accountname  & "$"
Und nur der Ordnung halber: Für den Profilpfad muss dann natürlich auch im Batch ".V2" hinzugefügt werden, also:
01.
md "\\winsrv08R2-DC\Schueler$\%1$.V2" 
02.
echo J | cacls "\\winsrv08R2-DC\Schueler$\%1$.V2" /C /E /G Administratoren:F  
03.
...
wobei sich für den Pfad eine Variable anböte:
01.
set "ProfilePath=\\winsrv08R2-DC\Schueler$\%1$.V2" 
02.
md "%ProfilePath%" 
03.
echo J | cacls "%ProfilePath%" /C /E /G Administratoren:F  
04.
...
Grüße
bastla
Bitte warten ..
Mitglied: Bammboole
08.04.2012 um 17:20 Uhr
So... Danke an die, die wat geschrieben haben. Speziel an basla ;)

Funktioniert soweit alles.

@bastla: Was dieses V2 am ende angeht. Ich musste die Endung nur beim erstellen des Ordners angeben... sprich in "verz.cmd". Wenn ich noch in der vbs, für den Profilepath angebe, erstellt das system eiskalt einen neuen Ordner der dann bsp: "lehrer.V2.V2" heißt. Dreistes dingen.

Was mich allerdings noch irritiert... Liegt aber nicht am script (denke ich). Die Profilordner werden weiterhin auch auf dem TS angelegt, unter Benutzer. Zusätzlich zu demwas auf dem DC angelegt wird. Hmmm, ma schauen.

Greetz
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Eventlog Druckjobs mit VBS auslesen

Frage von joni2000de zum Thema Batch & Shell ...

Windows 7
gelöst Sind euch verstärkte Probleme bei Windows 7 Updates aufgefallen? (4)

Frage von RadioHam zum Thema Windows 7 ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

RedHat, CentOS, Fedora
gelöst Erstellen von Desktopverknüpfungen und Anpassung der Taskleiste (2)

Frage von honeybee zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...