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

Gruppen anlegen aus csv datei und user hinzufügen

Frage Entwicklung VB for Applications

Mitglied: koluschkiB

koluschkiB (Level 1) - Jetzt verbinden

25.05.2010 um 15:39 Uhr, 4939 Aufrufe, 15 Kommentare

hey admin freunde

vielleicht kann einer von euch mal dieses script sich mal anschauen und mir sagen wo der fehler liegt

dieses script liest aus einer .csv datei die benutzer und gruppen aus und legt sie im AD an. noch dazu werden benutzerordner erstellt und im netzwerk freigegebene.

das problem was ich habe, sind dieses shit gruppen.
in der csv datei sind natürlich einige gruppen doppelt vorhanden, letzt endlich steht dort nur, das der user xy denn gruppen V und Z zugeordnet sind. problem ist dies, dass er zwar die gruppen anlegt, aber immer nur einen benutzer hinzufügt. dabei sollte zb die gruppe Z 5Mitglieder haben.
ich bin schon am verzweifeln und es kotzt mch langsam an. ich brauche keine nutzlosen tipps, dass ich die lösung in der script-center.chm datei finden also spart euch die mühe, es mir mitzuteilen. ich hab schon alles möglich probiert, vieles verscuht und doch am ende gescheiter.
hab schon hier, dass problem gepostet ob es ne möglichkeit gäbe, irgendwie diese Gruppen erstellen so abzufangen, dass das script es selbst checkt, das die gruppe bereits existiert. aber außer gulasch und dem tollen tipp "im script-center.chm" findest du die lösung, kam nichts brauchbares heraus.
im netz finden man hilfen, wie man user in gruppen addet. starte ich das script kriege ich an immer an der selben stelle nen fehler, dabei kann es nicht falsch sein... denn es steht sogar in dieser script-center drine von der jeder hier so schwärmt

dies ist der code

01.
 
02.
Dim objDomain, objOU, objUser, objGroup 
03.
Dim fso, f, Zeile, Feld 
04.
Dim objFSO, objFolder, strComputer, objWMIService, objNewShare 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
Set f = fso.OpenTextFile ("c:\user.txt",1,0) 
08.
 
09.
Do while not f.AtEndOfLine 
10.
Zeile = f.readLine 
11.
Feld = split(Zeile,";") 
12.
Vorname = Feld(0) 
13.
Nachname = Feld(1) 
14.
Abteilung = Feld(2) 
15.
Gruppe1 = Feld(3) 
16.
Gruppe2 = Feld(4) 
17.
Gruppe3 = Feld(5) 
18.
Gruppe4 = Feld(6) 
19.
Gruppe5 = Feld(7) 
20.
 
21.
  
22.
Set objOU = GetObject("LDAP://cn=users,dc=testad,dc=int") 
23.
Set objUser = objOU.Create("user", "CN=" & Vorname & " " & Nachname) 
24.
objUser.Put "sAMAccountName", Nachname 
25.
objUser.Put "displayName", Vorname & " " & Nachname 
26.
objUser.Put "givenName", Vorname 
27.
objUser.Put "sn", Nachname 
28.
objUser.Put "description", Abteilung 
29.
'objUser.Put "userAccountControl", 66082 
30.
objUser.Put "userPrincipalName", left(Vorname,3) & left(nachname,2) & "@testAD.int" 
31.
objUser.SetInfo 
32.
 
33.
 
34.
 
35.
 
36.
Set objGroup = objOU.Create("Group", "cn=" & Gruppe1) 
37.
Set objGroup = objOU.Create("Group", "cn=" & Gruppe2) 
38.
Set objGroup = objOU.Create("Group", "cn=" & Gruppe3) 
39.
Set objGroup = objOU.Create("Group", "cn=" & Gruppe4) 
40.
Set objGroup = objOU.Create("Group", "cn=" & Gruppe5) 
41.
 
42.
On Error Resume Next 
43.
 
44.
objGroup.SetInfo 
45.
objGroup.Add objUser.ADsPath 
46.
 
47.
 
48.
'Ordner werden für denn Benutzer angelegt, dabei wird der Nachname als Ordnernameverwendet 
49.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
50.
Set objFolder = objFSO.CreateFolder("C:\Freigaben\" &Nachname) 
51.
 
52.
Dim File_Share 
53.
File_Share = 0 
54.
Dim MAXIMUM_CONNECTIONS 
55.
MAXIMUM_CONNECTIONS = 25 
56.
 
57.
 
58.
strComputer = "." 
59.
Set objWMIService = GetObject("winmgmts:" _ 
60.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
61.
 
62.
Set objNewShare = objWMIService.Get("Win32_Share") 
63.
 
64.
errReturn = objNewShare.Create _ 
65.
("C:\Freigaben\" &Nachname, ""&Nachname, File_Share, _ 
66.
    MAXIMUM_CONNECTIONS, "Benutzerordner") 
67.
Loop 
68.
 
der fehler steckt irgendwo zwischen zeile 35 und 47.
nehme ich das "ON ERROR RESUME NEXT"
werden als erstes die objGroup = objOU.Create befehle bemängelt, lasse ich die weg, krieg ich ne meldung dass objGroup.ADD ein unbekannter befehl ist.
usw usw... ein teufelskreis

mfg

koluschkiB
Mitglied: bastla
25.05.2010 um 21:22 Uhr
Hallo koluschkiB!

Weil Du dermaßen freundlich fragst, werde ich versuchen, Dir Hilfestellung in Form von Hinweisen auf Beispiele anzubieten (ohne eine ".chm" - obwohl es hier auch eine solche gäbe ):
http://blogs.technet.com/b/heyscriptingguy/archive/2005/09/21/how-can-i ...
http://blogs.technet.com/b/heyscriptingguy/archive/2005/11/23/how-can-i ...

Auf Basis dessen, was dort gezeigt wird, könntest Du dann zB eine Funktion, die prüft, ob es eine bestimmte Gruppe schon gibt, verwenden und, abhängig vom Ergebnis, die Gruppe neu erstellen oder nur per "GetObject" auf die schon bestehende Gruppe zugreifen - im einfacheren Fall (Ziel-OU bekannt, keine Notwendigkeit, im gesamten AD auf Vorhandensein einer gleichnamigen Gruppe zu prüfen):
01.
Function GroupExists(Group, OU) 
02.
'OU wird als Obejkt übergeben; es interessieren nur die enthaltenen Gruppen 
03.
OU.Filter = Array("group") 
04.
'Default: Gruppe noch nicht vorhanden 
05.
GroupExists = False 
06.
'Alle in der OU enthaltenen Gruppen durchgehen 
07.
For Each objGroup in OU 
08.
    'klein geschriebenen Gruppennamen der betrachteten Gruppe 
09.
    'mit klein geschriebenem übergebenen Gruppennamen vergleichen 
10.
    If LCase(objGroup.sAMAccountName) = LCase(Group) Then 
11.
        'bei Übereinstimmung gibt es die Gruppe bereits ... 
12.
        GroupExists = True 
13.
        '... und es müssen die weiteren Gruppen nicht mehr geprüft werden 
14.
        Exit For 
15.
    End If 
16.
Next 
17.
End Function
Verwenden lässt sich diese Funktion etwa so:
01.
If GroupExists("GruppeZ", objOU) Then 
02.
    'Gruppe nur referenzieren 
03.
Else 
04.
    'Gruppe erzeugen 
05.
End If
Grüße
bastla

P.S.:
das problem was ich habe, sind dieses shit gruppen
Es ist ja wirklich nicht einzusehen, dass Du Dich als Anfänger anstatt mit Sicherheitsgruppen gleich mit "shit"-Gruppen herumschlagen sollst ...
Bitte warten ..
Mitglied: koluschkiB
26.05.2010 um 09:02 Uhr
funktioniert nicht...

wenn ich die funktion meinem script anpasse, habe ich gleich in der ersten zeile nen fehler "GroupExists" = Typen unverträglichkeit. wieso auch immer das so ist...

und so sieht es in etwa aus

01.
If GroupExist("Gruppe1", objOU) Then 
02.
    objGroup.Add objUser.ADsPath 
03.
Else 
04.
    Set objGroup = objOU.Create("Group", "cn=" & Gruppe1) 
05.
	objGroup.Add objUser.ADsPath 
06.
End If
an sich ist es logisch, wenn gruppe1 existiert den nötigen user hinzufügen. wenn gruppe1 nicht existiert, anlegen und dann den vogel dazu adden. leider ist theorie nicht mit der praxis zu vergleichen. oder habe ich da grade nen denkfehler?

meine idee, die ich hatte war folgenedes:

01.
Set objGroup = objOU.Create("Group", "cn=" & Gruppe1) 
02.
if objGroupExists Then 
03.
objGroup.SetInfo 
04.
objGroup.Add objUser.ADsPath 
05.
else ON Error Resume Next 
06.
End If
und siehe da es funktioniert
endlich ein erfolgserlebnis ^^ er legt die gruppe an, und fügt in die gruppe die richtigen user hinzu... juhuuuuu

dennoch danke, die nächsten sorgen, werden folgen. leider ist die aufgabe vollständig abgearbeitet. kleinigkeiten fehlen noch. aber das wird schon klappen

danke und gruß

koluschkiB
Bitte warten ..
Mitglied: bastla
26.05.2010 um 09:23 Uhr
Hallo koluschkiB!
01.
If GroupExist("Gruppe1", objOU) Then 
02.
    objGroup.Add objUser.ADsPath 
03.
Else 
04.
    Set objGroup = objOU.Create("Group", "cn=" & Gruppe1) 
05.
	objGroup.Add objUser.ADsPath 
06.
End If
an sich ist es logisch, wenn gruppe1 existiert den nötigen user hinzufügen. wenn gruppe1 nicht existiert, anlegen und dann den vogel dazu adden. leider ist theorie nicht mit der praxis zu vergleichen. oder habe ich da grade nen denkfehler?
Der Ablauf wäre soweit ok, allerdings kannst Du den User im ersten Fall nur hinzufügen, wenn Du bereits die Gruppe als Objekt zur Verfügung hast, was aber (noch) nicht der Fall ist - daher wäre noch ein
Set objGroup = GetObject ...
erforderlich.
Das zweite Script macht eigentlich genau das Verkehrte - wenn Du die Gruppe (gerade eben) erstellt hast, brauchst Du nicht mehr zu prüfen, ob es sie schon gibt - die Prüfung soll ja eben verhindern, dass Du die Gruppe anzulegen versuchst, wenn sie bereits vorhanden ist ...

Grüße
bastla
Bitte warten ..
Mitglied: koluschkiB
26.05.2010 um 09:52 Uhr
hey bastla


01.
If GroupExist("Gruppe1", objOU) Then 
02.
>     objGroup.Add objUser.ADsPath 
03.
> Else 
04.
>     Set objGroup = objOU.Create("Group", "cn=" & Gruppe1) 
05.
> 	objGroup.Add objUser.ADsPath 
06.
> End If 
07.
> 

das problem hatte ich eben schon ---> Fehler beim Ausführen
Typen unverträglichkeit mit GroupExists

wo soll denn deiner meiner nach nach das

01.
Set objGroup = ...
stehen?vor die IF anweisung?

quasi so?
01.
Set objGroup = objOU.Create("Group", "cn=" & Gruppe1) 
02.
If GroupExists("Gruppe1", objOU) Then 
03.
    objGroup.Add objUser.ADsPath 
04.
Else 
05.
    Set objGroup = objOU.Create("Group", "cn=" & Gruppe1) 
06.
	objGroup.Add objUser.ADsPath 
07.
End If
---> Fehler Typen unverträglichkeit GroupExists

stehe bisschena uf dem schlauch und checks nicht so ganz was du meinst

gruß

koluschki
Bitte warten ..
Mitglied: bastla
26.05.2010 um 12:28 Uhr
Hallo koluschkiB!

Das sollte (zB ab Zeile 33 Deines ursprünglichen Scripts) etwa so aussehen (wobei sich natürlich für 5 Gruppen eine Schleife anbieten würde):
01.
If GroupExists(Gruppe1, objOU) Then 
02.
    Set objGroup = GetObject("LDAP://cn=" & Gruppe1 & ",cn=Users,dc=testad,dc=int") 
03.
Else 
04.
    Set objGroup = objOU.Create("Group", "cn=" & Gruppe1) 
05.
    objGroup.SetInfo 
06.
End If 
07.
 
08.
objGroup.Add objUser.ADSPath
Grüße
bastla
Bitte warten ..
Mitglied: koluschkiB
26.05.2010 um 13:53 Uhr
hey bastla,

hab das fragment in mein script eingebaut, aber wie schon eben zig mal geschrieben, kriege ich beim ausführen des Scripts folgenden fehler

typenunverträglichkeit "GroupExists"

somit hilf mir das nicht wirklich weiter

danke

koluschki
Bitte warten ..
Mitglied: bastla
26.05.2010 um 15:13 Uhr
Hallo koluschkiB!

Ich weiß ja nun nicht, wie und wo Du das eingebaut hast, aber so sollte es auf jeden Fall funktionieren:
01.
Option Explicit 
02.
 
03.
Dim OU, objDomain, objOU, objUser, objGroup 
04.
Dim fso, f, Zeile, Feld, Vorname, Nachname, Abteilung, i 
05.
Dim objFolder, strComputer, objWMIService, objNewShare, errReturn 
06.
 
07.
OU = "cn=users,dc=testad,dc=int" 
08.
Set objOU = GetObject("LDAP://" & OU) 
09.
 
10.
Const File_Share = 0 
11.
Const MAXIMUM_CONNECTIONS = 25 
12.
 
13.
strComputer = "." 
14.
Set objWMIService = GetObject("winmgmts:" _ 
15.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
16.
Set objNewShare = objWMIService.Get("Win32_Share") 
17.
 
18.
Set fso = CreateObject("Scripting.FileSystemObject") 
19.
Set f = fso.OpenTextFile("c:\user.txt",1,0) 
20.
 
21.
Do While Not f.AtEndOfLine 
22.
    Zeile = f.readLine 
23.
    Feld = split(Zeile,";") 
24.
        Vorname = Feld(0) 
25.
        Nachname = Feld(1) 
26.
        Abteilung = Feld(2) 
27.
'        Gruppen werden in Schleife direkt angesprochen 
28.
'        Gruppe1 = Feld(3) 
29.
'        Gruppe2 = Feld(4) 
30.
'        Gruppe3 = Feld(5) 
31.
'        Gruppe4 = Feld(6) 
32.
'        Gruppe5 = Feld(7) 
33.
 
34.
    Set objUser = objOU.Create("user", "CN=" & Vorname & " " & Nachname) 
35.
        objUser.Put "sAMAccountName", Nachname 
36.
        objUser.Put "displayName", Vorname & " " & Nachname 
37.
        objUser.Put "givenName", Vorname 
38.
        objUser.Put "sn", Nachname 
39.
        objUser.Put "description", Abteilung 
40.
        'objUser.Put "userAccountControl", 66082 
41.
        objUser.Put "userPrincipalName", left(Vorname,3) & left(nachname,2) & "@testAD.int" 
42.
    objUser.SetInfo 
43.
 
44.
    For i = 3 To 7 'alle Gruppen bearbeiten 
45.
        If Feld(i) <> "" Then 
46.
            If GroupExists(Feld(i), objOU) Then 
47.
                Set objGroup = GetObject("LDAP://cn=" & Feld(i) & "," & OU) 
48.
            Else 
49.
                Set objGroup = objOU.Create("Group", "cn=" & Feld(i)) 
50.
                objGroup.Put "sAMAccountName", Feld(i) 
51.
                objGroup.SetInfo 
52.
            End If 
53.
            objGroup.Add objUser.ADSPath 
54.
        End If 
55.
    Next 
56.
 
57.
    'Ordner werden für denn Benutzer angelegt, dabei wird der Nachname als Ordnername verwendet 
58.
    Set objFolder = fso.CreateFolder("C:\Freigaben\" & Nachname) 
59.
 
60.
    errReturn = objNewShare.Create _ 
61.
        ("C:\Freigaben\" & Nachname, Nachname, File_Share, _ 
62.
        MAXIMUM_CONNECTIONS, "Benutzerordner") 
63.
Loop 
64.
 
65.
Function GroupExists(Group, OU) 
66.
'OU wird als Objekt übergeben; es interessieren nur die enthaltenen Gruppen 
67.
OU.Filter = Array("group") 
68.
'Default: Gruppe noch nicht vorhanden 
69.
GroupExists = False 
70.
'Alle in der OU enthaltenen Gruppen durchgehen 
71.
For Each objGroup in OU 
72.
    'klein geschriebenen Gruppennamen der betrachteten Gruppe 
73.
    'mit klein geschriebenem übergebenen Gruppennamen vergleichen 
74.
    If LCase(objGroup.sAMAccountName) = LCase(Group) Then 
75.
        'bei Übereinstimmung gibt es die Gruppe bereits ... 
76.
        GroupExists = True 
77.
        '... und es müssen die weiteren Gruppen nicht mehr geprüft werden 
78.
        Exit For 
79.
    End If 
80.
Next 
81.
End Function
Ein paar Anmerkungen:
  • Wenn Du in VBS Variablen deklarierst, dann nur nach einem "Option Explicit" (und natürlich alle).
  • Mehrfach verwendete Objekte immer wieder in einer Schleife zu erstellen ist wenig sinnvoll.
  • Es genügt ein "FileSystemObject" ("fso" vs "objFSO").
  • Öfter verwendete Strings (zB den Pfad der OU) vorweg in eine Variable oder sogar Konstante schreiben - macht das Script leichter anpassbar.
  • Gleiches gilt für konstante Werte wie etwa "File_Share".
  • Auch für das Erstellen der Benutzerordner wäre vorweg eine Prüfung, ob der Ordner bereits existiert, sinnvoll.
  • Wer hatte eigentlich die Idee, für jeden Ordner eine eigene Freigabe zu verwenden?
  • Einrückungen machen einen Code übersichtlicher.

Grüße
bastla
Bitte warten ..
Mitglied: koluschkiB
26.05.2010 um 16:13 Uhr
hey bastla,

danke für dein ausführliches script.
ich musste ein paar sachen ncoh ergänzen, wie zb diese passwort generierung. naja hab die variable passwort gesetzt usw.
er startet zwar problemlos das scritp und legt die ersten benutzer an, aber dann kommt die fehlerung dass ein objekt bereits vorhanden ist.
ich geh davon aus, dass er ne namen vergeben will, der schon da ist

ich hab das scritp so angepasst
01.
Option Explicit 
02.
 
03.
Dim OU, objDomain, objOU, objUser, objGroup 
04.
Dim fso, f, Zeile, Feld, Vorname, Nachname, Abteilung, i, Passwort 
05.
Dim objFolder, strComputer, objWMIService, objNewShare, errReturn 
06.
 
07.
OU = "cn=users,dc=testad,dc=int" 
08.
Set objOU = GetObject("LDAP://" & OU) 
09.
 
10.
Const File_Share = 0 
11.
Const MAXIMUM_CONNECTIONS = 25 
12.
 
13.
strComputer = "." 
14.
Set objWMIService = GetObject("winmgmts:" _ 
15.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
16.
Set objNewShare = objWMIService.Get("Win32_Share") 
17.
 
18.
Set fso = CreateObject("Scripting.FileSystemObject") 
19.
Set f = fso.OpenTextFile("c:\user.csv",1,0) 
20.
 
21.
Do While Not f.AtEndOfLine 
22.
Zeile = f.readLine 
23.
Feld = split(Zeile,";") 
24.
Vorname = Feld(0) 
25.
Nachname = Feld(1) 
26.
Abteilung = Feld(2) 
27.
'        Gruppen werden in Schleife direkt angesprochen 
28.
'        Gruppe1 = Feld(3) 
29.
'        Gruppe2 = Feld(4) 
30.
'        Gruppe3 = Feld(5) 
31.
'        Gruppe4 = Feld(6) 
32.
'        Gruppe5 = Feld(7) 
33.
 
34.
 
35.
Passwort = left(Vorname,3)&left(Nachname,2)&"1234%" 
36.
Passwort = LCase(passwort) 
37.
 
38.
Set objUser = objOU.Create("user", "CN=" & Vorname & " " & Nachname) 
39.
objUser.Put "sAMAccountName", Nachname 
40.
objUser.Put "displayName", Vorname & " " & Nachname 
41.
objUser.Put "givenName", Vorname 
42.
objUser.Put "sn", Nachname 
43.
objUser.Put "description", Abteilung 
44.
objUser.Put "userPrincipalName", left(Vorname,3) & left(nachname,2) & "@testAD.int" 
45.
objUser.SetInfo 
46.
objUser.SetPassword Passwort 
47.
objUser.Put "userAccountControl", 544 
48.
objUser.Put "pwdLastSet", 0 
49.
objUser.SetInfo 
50.
 
51.
For i = 3 To 7 'alle Gruppen bearbeiten 
52.
If Feld(i) <> "" Then 
53.
If GroupExists(Feld(i), objOU) Then 
54.
Set objGroup = GetObject("LDAP://cn=" & Feld(i) & "," & OU) 
55.
Else 
56.
Set objGroup = objOU.Create("Group", "cn=" & Feld(i)) 
57.
objGroup.Put "sAMAccountName", Feld(i) 
58.
objGroup.SetInfo 
59.
End If 
60.
objGroup.Add objUser.ADSPath 
61.
End If 
62.
Next 
63.
 
64.
'Ordner werden für denn Benutzer angelegt, dabei wird der Nachname als Ordnername verwendet 
65.
Set objFolder = fso.CreateFolder("C:\Freigaben\" & Nachname) 
66.
errReturn = objNewShare.Create _ 
67.
    ("C:\Freigaben\" & Nachname, Nachname, File_Share, _ 
68.
    MAXIMUM_CONNECTIONS, "Benutzerordner") 
69.
Loop 
70.
 
71.
Function GroupExists(Group, OU) 
72.
'OU wird als Objekt übergeben; es interessieren nur die enthaltenen Gruppen 
73.
OU.Filter = Array("group") 
74.
'Default: Gruppe noch nicht vorhanden 
75.
GroupExists = False 
76.
'Alle in der OU enthaltenen Gruppen durchgehen 
77.
For Each objGroup in OU 
78.
    'klein geschriebenen Gruppennamen der betrachteten Gruppe 
79.
    'mit klein geschriebenem übergebenen Gruppennamen vergleichen 
80.
    If LCase(objGroup.sAMAccountName) = LCase(Group) Then 
81.
        'bei Übereinstimmung gibt es die Gruppe bereits ... 
82.
        GroupExists = True 
83.
        '... und es müssen die weiteren Gruppen nicht mehr geprüft werden 
84.
        Exit For 
85.
    End If 
86.
Next 
87.
End Function
die fehlermeldung haut raus, dass in der zeile 58 der fehler ist "das objekt ist bereits vorhanden"

in der csv datei, sind natürlich eineige gruppen doppelt, bzw, verschiedene user in der selben gruppe.
was die freigegeben ordner angeht, istd as nopch nicht ganz fertig. die berechtigungen müssen noch gesetzt werden.
in der aufgabenstellung heisst es, jedem benutzer soll eine verzeichnis eingerichtet werden, welches für denn netzwerkzugriff eingerichtet wird

gruß

koluschki
Bitte warten ..
Mitglied: bastla
26.05.2010 um 16:28 Uhr
Hallo koluschkiB!
"das objekt ist bereits vorhanden"
... klingt nach Resten eines vorigen Tests - sollte aber gerade bei Gruppen (also in Zeile 58) nicht passieren, da ja deren Existenz vorweg geprüft wird.

Zum Testen kannst Du zwischen Zeile 52 und 53 zB
WScript.Echo Nachname, Feld(i)
einfügen und das Script aus einer CMD-Shell mit
cscript //nologo C:\Useranlage.vbs
testen - so kannst Du nachvollziehen, bei welchem User und welcher Gruppe der Fehler entsteht.
in der aufgabenstellung heisst es, jedem benutzer soll eine verzeichnis eingerichtet werden, welches für denn netzwerkzugriff eingerichtet wird
Dazu würde es aber reichen, wenn Du "C:\Freigaben" frei gibst und mit passenden NTFS-Rechten dafür sorgst, dass auf den darunter liegenden User-Ordner nur noch der User selbst und zB die Gruppe "Administratoren" zugreifen können.

Grüße
bastla
Bitte warten ..
Mitglied: koluschkiB
26.05.2010 um 16:33 Uhr
hey bastla´,

hab das script nochmal ausgeführt, und geschaut wie wo was anders ist und woran es liegen könnte

hab den fehler gefunden
er war bei dem erstellen von denn Benutzerordnern. dort war ne Const gesetzt und keine variable.
eben so hab eich gesehen, dass in deinem code meine lieblingsfehler waren "" und & hat an einer stelle gefehlt.

super geile sache, die gruppen werden angelegt. die user werden hin zu gefügt.

danke

koluschkiB
Bitte warten ..
Mitglied: koluschkiB
26.05.2010 um 16:34 Uhr
ich hab den fehler gefunden
ursache habe ich eben schon an einer anderen stelle hier erklärt

an denn resten früherer test kann es nciht liegen, da ich alles gandenlos gecleant habe. hab das script mittlerweile bestimmt schon 100000 ausgeführt und weiss, was wo weg muss

nochmal zu denn ordnern, nur der Admin und der "Ordnerinhaber" sollen zugriff auf denn ordner kriegen. alle anderen sollen ausgesperrt sein
schaue aber ob ich ne lösung irgendwo dafür finden

danke

koluschki
Bitte warten ..
Mitglied: bastla
26.05.2010 um 16:44 Uhr
Hallo koluschkiB!

Na schön ...

Da ich das ja offensichtlich übersehen haben muss:
dass in deinem code meine lieblingsfehler waren "" und & hat an einer stelle gefehlt.
Wo (in welcher Zeile meines Entwurfs) haben denn die Teile gefehlt?

[Edit]
Falls Du
""&Nachname
gemeint haben solltest: Es ist ziemlich sinnfrei, einen Leerstring mit einer Variablen zusammenzufügen - das Ergebnis ist wieder nur der Inhalt der Variablen ...
[/Edit]

Grüße
bastla

P.S.: Wie sieht denn nun Dein funktionierendes Script aus?
Bitte warten ..
Mitglied: koluschkiB
27.05.2010 um 08:26 Uhr
morgen bastla,

genau das meinte ich mit den "" und &. ich habs nur mit meinem script so bisschen vergliechen und dies fiel mir halt auf.
aber die hauptursache, dass das script nen fehler rein gehauen hat. war bei der ordner erstellung die variable bzw in deinem script die const File_SHare und Maximum_Connection. hab aus const dim gemacht und zack, lief es problemlos durch. frag mich nicht, wieso das so war. aber es hat mich gefreut, den fehler auch selbst gefunden zu haben ...ein erfolgserlebniss

das script läuft super. es ist ein paar zeilen kürzer, musst ein paar sachen ergänzen, wie zb mit dem PW generieren aus vor- und nachname. aber das lief problemlos.
jetzt sind es nur noch ein paar kleinigkeiten die mir in dem script fehlen, aber da mach eich mich ehute ans werk
nochmal danke für alles

gruß

koluschkiB
Bitte warten ..
Mitglied: bastla
27.05.2010 um 09:09 Uhr
Hallo koluschkiB!
bei der ordner erstellung die variable bzw in deinem script die const File_SHare und Maximum_Connection. hab aus const dim gemacht und zack, lief es problemlos durch. frag mich nicht, wieso das so war.
Der Unterschied zwischen "Const" (kannst Du im gesamten Script nur einmal machen - daher auch gleich am Anfang) und "Dim" (ist mehrmals möglich) kommt eigentlich nur zum Tragen, wenn Du den jeweiligen Befehl innerhalb einer Schleife platzierst - den Wert von "File_Share" und "MAXIMUM_CONNECTIONS" willst Du ja ohnehin zwischendurch nicht mehr ändern (dazu müssten es Variable und daher per "Dim" deklariert sein) ...

Grüße
bastla
Bitte warten ..
Mitglied: koluschkiB
27.05.2010 um 15:24 Uhr
hey bastla

die werte können ja so bleiben, durch testen usw. hab eich halt gesehen, dass es mit Const eben nicht geht und er mir ne Fehlermeldung raushaut.

trotzdem danke für alles
und weiterhin gutes gelingen

ich mach mich weiter an meine aufgabe, ordnerberechtigungen setzen

gruß und danke

koluschkiB
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst AD-Felder für User mittels Powershell befüllen aus CSV-Datei (2)

Frage von Alex94G zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...