koluschkib
Goto Top

Benutzer aus csv file mit vbs anlegen

hallo admin freunde face-smile

hab ein problem, bzw eine frage

ich hab denn auftrag gekriegt, ein script zu schrieben, was user im AD anlegt. die daten sollen aus einer csv datei geladen werden.
so weit so gut
hab hier und in der ach so von euch gepriesenen script56 datei rum gesucht, man findet zwar einiges hilfreichen, doch an der umsetzung scheitert es einwenig

ich hab hier bei admin.de einen eintrag gefunden, hab ihn genommen und dementsprechend so angepasst, dass meine daten dort drinne stehen

der code sie wie folgt aus:

Dim fso, f, Zeile, Feld

Set fso = CreateObject("Scripting.FileSystemObject")  
Set f = fso.OpenTextFile ("c:\user.txt",1,0)  

Do while not f.AtEndOfLine
Zeile = f.readLine
Feld = split(Zeile,";")  
Benutzer = Feld(0)
Vorname = Feld(1)
Nachname = Feld(2)
Passwort = Feld(3)
Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort)
Loop
f.Close
Wscript.Quit(0)

Dim ouo, b
Sub BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort)
Set ouo = GetObject("LDAP://OU=Management,DC=testad,DC=int")  
Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname)  
Dim WshShell, ret
Set WshShell = WScript.CreateObject("WScript.Shell")  
b.Put "sAMAccountName", Benutzer  
b.Put "displayName", Vorname & " " & Nachname  
b.Put "givenName", Vorname  
b.Put "sn", Nachname  
b.Put "userAccountControl", 66082  
b.Put "userPrincipalName", Benutzer & "@testad.int"  
b.SetInfo
b.SetPassword Passwort
b.AccountDisabled = False
b.SetInfo
Set b = Nothing
Set ouo = Nothing
'WScript.Sleep(1000)  
End Sub

jetzt habe ich folgendes problem, ich krieg immer nen fehler Zeile 21 Zeichen 1. das objekt befindet sich nicht auf dem server, werde nicht schlau draus.
muss dazu sagen, dass ich nen MS Server 2008 verwende, kann es sein dass es evtl daran liegt? in der script56.chm datei steht auch drinne unterstützte platformen bis winSrv2k3
vielleicht hat einer von euch schon mal dieses problem gehabt und kann mir evtl. nen klein tipp oder sowas geben

bis bald

koluschki B

Content-Key: 143262

Url: https://administrator.de/contentid/143262

Ausgedruckt am: 29.03.2024 um 14:03 Uhr

Mitglied: 60730
60730 20.05.2010 um 17:45:38 Uhr
Goto Top
Moin,

21.Set ouo = GetObject("LDAP://OU=Management,DC=testad,DC=int")

Und die Zeile hast du von dem Script 1zu1 übernommen?

Da steht, wie die Domain heisst und in welche OU der User kommt.
das Objekt befindet sich nicht auf dem Server.

Gruß
Mitglied: bastla
bastla 20.05.2010 um 17:47:35 Uhr
Goto Top
Hallo koluschkiB!

Bei mir macht sich der Eindruck breit, man müsste Dir dauernd etwas "anpreisen" (findest Du selber nix?) ...

... in diesem Fall zB TechNet Script Center Sample Scripts (vom "Scripting Guy" hast Du sicher auch noch nie etwas gehört / gelesen) ...

Grüße
bastla
Mitglied: koluschkiB
koluschkiB 21.05.2010 um 09:03:48 Uhr
Goto Top
ja ich hab die zeile 1zu1 übernommen
die OU sowie die beiden DC-Werte habe ich eingetragen.
ich musste auch ein paar andere werte ändern, zb wie die datei csv datei heisst und wo sie liegt
aber dennoch kriege ich die meldung "Bla bla befindet sich nicht auf dem server"
was auch immmer damit gemint ist
der fehler sagt auch expliezit Zeile 21 Zeichen 1. wäre für mich noch nach vollziehbar wenn er sagen würde, OU nicht da oder DC nicht vorhanden. aber so weiss ich echt nicht wo jetzt der fehler liegt
bisschen blöd
Mitglied: koluschkiB
koluschkiB 21.05.2010 um 11:50:19 Uhr
Goto Top
ja ganz toll das script center face-smile
verbringe mehr mit möglichkeiten der suche, als mit der aufgabe selbst face-wink
aber nun gut, tut nichts zur sache.

hab das script von oben weg gemacht und von neu angefangen,. mit hilfe des zum 10mal erwähneten centers, was ich ja nicht verkehrt ist. da es soweit ganz gut klappt mit alle. das script liest die datei aus und leg so nen vogel da an face-smile
das alles ist abe rnur die spitze des eisbergs face-sad


hab mal ne frage

und zwar wenn ich nen anmelde namen generieren muss, zb ersten 3 buchstaben vom vornamen und erste 2 buchstaben vom nach namen

bsp.

Hans Maulwurf

Anmeldenamen:

hanma@dc.dc

nun zu meiner frage, was muss ich genau angeben um das hin zu kriegen?

objUser.Put "userPrincipalName", ("Vorname,3")  ("Nachname,2") & "@testAD.int"  

hab diesen code getestet und zeigt er mir nene error an

lasse ich es weg, und sage nur Nachname, klappts problems los. in denn AD eigenschaftend es user kann man es ja sehen und alles
wo liegt der fehler? an welcher stelle muss was verändert werden?
(und bitte keinen verweise zu scriptcenter.chm)
Mitglied: bastla
bastla 21.05.2010 um 12:49:20 Uhr
Goto Top
Hallo koluschkiB!
und bitte keinen verweise zu scriptcenter.chm
I wo - "Left()" und "Mid()" sind ja in "script56.chm" zu finden ... face-wink

Grüße
bastla
Mitglied: Biber
Biber 21.05.2010 um 13:00:19 Uhr
Goto Top
Moin KoluschkiB,

Zitat von @koluschkiB:
> objUser.Put "userPrincipalName", ("Vorname,3")  ("Nachname,2") & "@testAD.int"  
> 

hab diesen code getestet und zeigt er mir nene error an verändert werden?
Was verleitet dich zu der Annahme, das wäre Code? Weil Codetags drumherum sind?
(und bitte keinen verweise zu scriptcenter.chm)
Aber da liesse sich auch nach Left() und Mid() suchen...

objUser.Put "userPrincipalName",  LCase( Left( Vorname, 3) &  Left (Nachname, 2) )  & "@testAD.int"  

Grüße
Biber
Mitglied: koluschkiB
koluschkiB 21.05.2010 um 13:21:56 Uhr
Goto Top
hey bastla face-smile

habs gelöst face-wink und er legt denn benutzernamen so an wie er soll. jewals die anfansbuchstaben vom vor und nachnamen

aber dennoch habe ich eine frage
mal was zu was anderem und im scriptcenter ist es immer so angegeben dass es meine frage nicht beantwortet

das script was ich habe legt die benutzer an, soweit so gut. aber er legt immer ne OU an.
gibt es ne möglichkeit, diese OU einfach wegzulassen, so dass man die benutzer und gruppen unter Users im AD anlegt und sieht?

so sieht mein script bis jetzt aus:

Dim objDomain, objOU, objUser, objGrou, objDesc
Dim fso, f, Zeile, Feld

Set fso = CreateObject("Scripting.FileSystemObject")  
Set f = fso.OpenTextFile ("c:\user.txt",1,0)  

Do while not f.AtEndOfLine
Zeile = f.readLine
Feld = split(Zeile,";")  
Vorname = Feld(0)
Nachname = Feld(1)
Abteilung = Feld(2)
Gruppe1 = Feld(3)
Gruppe2 = Feld(4)
Gruppe3 = Feld(5)
Gruppe4 = Feld(6)
Gruppe5 = Feld(7)



Set objDomain = GetObject("LDAP://dc=testad,dc=int")  
Set objOU = objDomain.Create("organizationalUnit", "ou=blabla")  
objOU.SetInfo
 
Set objOU = GetObject("LDAP://OU=blabla,dc=testad,dc=int")  
Set objUser = objOU.Create("user", "CN=" & Vorname & " " & Nachname)  
objUser.Put "sAMAccountName", Nachname  
objUser.Put "displayName", Vorname & " " & Nachname  
objUser.Put "givenName", Vorname  
objUser.Put "sn", Nachname  
objUser.Put "description", Abteilung  
'objUser.Put "userAccountControl", 66082  
objUser.Put "userPrincipalName", left(Vorname,3) & left(nachname,2) & "@testAD.int"  
objUser.SetInfo
 
Set objOU = GetObject("LDAP://OU=blabla,dc=testad,dc=int")  
Set objGroup = objOU.Create("Group", "cn=" & Gruppe1)  
objGroup.Put "sAMAccountName", "atl-users12"  
objGroup.SetInfo
 
objGroup.Add objUser.ADSPath

Loop

wo liegt der fehler? wie kann ich die ou einfach weglassen

gruß

koluschki
Mitglied: koluschkiB
koluschkiB 21.05.2010 um 14:03:42 Uhr
Goto Top
ja dann such mal! also vielleicht habt irh n anderes center, aber ich kriege die meldung wenn ich nach left() suche "die suche kann nach diesem befehl nicht suchen" face-wink
blöd, aber eh egal.

das porblem von eben mit der OU ist übrigens auch schon gelöst, statt OU hab ich CN hin geschrieben und es klappt wunderbar.
nun setze ich mich mit dem anlegen von gruppen auseinadner.
problem ist, dass in der csv datei die user manchmal die selbengruppen haben, was eben beim erstellen Error mitsich bringt.
aber dafür wird sich auch noch ne lösung finden face-smile
Mitglied: koluschkiB
koluschkiB 21.05.2010 um 14:54:37 Uhr
Goto Top
hab mal ne frage zu dem anlegen der gruppen, gibt es ne möglichkeit einfach ne If anweisung zu machen, falls die gruppe bereits existiert, dass dieser schritt eben übersprungen wird?

so in etwa

Set objGroup = objOU.Create("Group", "cn=" & Gruppe1)  
if Gruppe1 already Exists Then 
On Error Resume Next
end if

leider ist das was da ist falsch, es müssen insgesamt 5gruppen angelegt werden. praktisch weniger, da manche eben doppelt sind
hoffe einer von euch kann helfen
Mitglied: 60730
60730 21.05.2010 um 15:50:11 Uhr
Goto Top
(OT)
5 Gruppen (OUs) legt man nicht in einem Script an indem man auch User anlegt.
5 Gruppen (OUs) legt man sauber mit der Hand an.
(/OT)
Mitglied: koluschkiB
koluschkiB 25.05.2010 um 10:25:26 Uhr
Goto Top
naja, so würde es jeder normale mensch machen face-smile ich natürlich auch
aber ich hab die glorreiche aufgabe, ein script zu schreiben, was eben user gruppen und ordner für denn jewaligen benutzer anlegt.
per hand 10 user, 5 gruppen 10 ordner anlegen und freigeben, dauert so 15min face-smile ich sitze schon seit 4 tagen an dem script, muss also glaub ich nichts mehr sagen
aber danke für denn tipp

häng imme rnoch an der gruppen anlegung.
hat einer nen tipp wie man das auffangen könnte, wenn so einen gruppe nun existiert?
ich brauch keine endlösung, eher nen wink oder nen tipp wie man es evtl machen könnte

gruß

koluschki