Logfile erstellen mit VBS
Hallo Admin-Genossen
habt da ein problem mit erstellen einer *.Log Datei
Ich hab ein Script was User und Gruppen im AD anlegt, die benötigten Infos liest das script aus einer user.csv datei aus.
Hab aber nun folgendes Problem. Das script legt alles brav an, doch der Text der in der Logdatei steht, ist leider der Falsche.
Der fehler passiert in der 94 Zeile. Ich will das in der Logfile geschrieben wird, in welche Gruppen der Benutzer hinzugefügt wurde.
Aber es klappt nicht so ganz, In der Datei Steht drin: Der benutzer ist Mitglied folgener Gruppen "8"
Wieso er 8 nimmt ist mir nicht so ganz klar, da "i= Feld(3to7) ist.
Vielleicht kann mir einer sagen wo mein Denkfehler ist und mir ggf. ne Hilfestellungen geben kann.
Über Tipps wäre ich dankbar
Gruß und Danke
koluschkiB
habt da ein problem mit erstellen einer *.Log Datei
Ich hab ein Script was User und Gruppen im AD anlegt, die benötigten Infos liest das script aus einer user.csv datei aus.
Hab aber nun folgendes Problem. Das script legt alles brav an, doch der Text der in der Logdatei steht, ist leider der Falsche.
Option Explicit
'Variablen des gesamten Scripts werden hier ind iesen 3 Zeilen Deklariert
Dim OU, objDomain, objOU, objUser, objGroup, WsHShell, CMD
Dim fso, f, Zeile, Feld, Vorname, Nachname, Abteilung, i, Passwort, Abfall, objFile, logFile, errFile, logText
Dim objFolder, strComputer, objWMIService, objNewShare, errReturn, PermL1
Const ForAppending = 8
'Organisationseinheit im AD wird gesetzt (benutzer)
OU = "cn=users,dc=testad,dc=int"
Set objOU = GetObject("LDAP://" & OU)
'Werte für die Freigegebenen Ordner, gesharte Dateien sowie Maximal Anzahl gleichzeitiger Zugriffe
Dim File_Share
File_Share = 0
Dim MAXIMUM_CONNECTIONS
MAXIMUM_CONNECTIONS = 25
'Verbidnung zum WMI wird hergestellt (Root-Verzeichnis)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objNewShare = objWMIService.Get("Win32_Share")
'Die Datei mit allen Benutzerangaben wird geladen
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:\user.csv",1,0)
Set errfile = fso.CreateTextFile("C:\Error.log")
errfile.Close
'1.Zeile der .csv Datei wird Übersprungen
Abfall = f.Readline ' also die 1. Zeile
Do while not f.AtEndOfStream 'statt AtEndOfLine
'Die Einzelnen Felder der .csv Datei werden gesetzt und zugeordnet
Zeile = f.readLine
Feld = split(Zeile,";")
Vorname = Feld(0)
Nachname = Feld(1)
Abteilung = Feld(2)
' Gruppen werden in Schleife direkt angesprochen
'Gruppe1 = Feld(3)
'Gruppe2 = Feld(4)
'Gruppe3 = Feld(5)
'Gruppe4 = Feld(6)
'Gruppe5 = Feld(7)
'Variable zu Erstellung des Anmeldepassworts für die 1. Anmeldung
Passwort = left(Vorname,3)&left(Nachname,2)&"1234%"
Passwort = LCase(passwort)
Set logfile = fso.CreateTextFile("C:\" &Nachname&".log")
logfile.Close
'Infos für das AD, die dem User in den AD EIgenschaften zugeordnet werden
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 "userPrincipalName", left(Vorname,3) & left(nachname,2) & "@testAD.int"
objUser.SetInfo
objUser.SetPassword Passwort
objUser.Put "userAccountControl", 544
objUser.Put "pwdLastSet", 0
objUser.SetInfo
Set logtext = fso.OpenTextFile _
("C:\"&Nachname&".log", ForAppending, True)
'Log-Datei mit Text füllen
logtext.WriteLine("Der benutzer " &Nachname& " wurde im AD angelegt!")
'Die Function zur Erstellung der Gruppen aus Feld 3-7 wird aufgerufen und die Richtigen benutzer werden Zugeordnet
For i = 3 To 7 'alle Gruppen bearbeiten
If Feld(i) <> "" Then
If GroupExists(Feld(i), objOU) Then
Set objGroup = GetObject("LDAP://cn=" & Feld(i) & "," & OU)
Else
Set objGroup = objOU.Create("Group", "cn=" & Feld(i))
objGroup.Put "sAMAccountName", Feld(i)
objGroup.SetInfo
End If
objGroup.Add objUser.ADSPath
End If
Next
logtext.WriteLine("Der Benutzer ist Mitglied folgender Gruppen" &i)
'Oberordner wird auf c:\ angelegt
IF fso.FolderExists("C:\Freigaben") then
Set objFolder = fso.GetFolder("C:\Freigaben")
ELSE
Set objFolder = fso.CreateFolder("C:\Freigaben")
Wscript.Echo "Der Oberordner C:\Freigaben wurde angelegt! In Ihm befinden sich die Benutzerordner!"
END IF
'Benutzer spezifischer Ordner wird angelegt
IF fso.FolderExists("C:\Freigaben\" & Nachname) then
Msgbox ("Der Ordner mit dem Namen "&Nachname&" existiert bereits!")
Set objFolder = fso.GetFolder("C:\Freigaben\" & Nachname)
ELSE
Set objFolder = fso.CreateFolder("C:\Freigaben\" & Nachname)
END IF
errReturn = objNewShare.Create _
("C:\Freigaben\" & Nachname, ""&Nachname, File_Share, _
MAXIMUM_CONNECTIONS, "Benutzerordner")
'WSH Shell für die Erstellung der Zugriffsrechte wird Erstellt
Set WshShell = WScript.CreateObject("WScript.Shell")
'Ordnerzugriffe werden gesetzt (Admin= Voll, Inhaber= Voll)
PermL1 = "Administratoren:F " & Nachname & ":F"
CMD = "cmd /c echo j|cacls C:\Freigaben\" & Nachname & " /G " & PermL1
WshShell.Run CMD, 0, 1
Loop
'Function für die Erstellung der Gruppen
Function GroupExists(Group, OU)
'OU wird als Objekt übergeben; es interessieren nur die enthaltenen Gruppen
OU.Filter = Array("group")
'Default: Gruppe noch nicht vorhanden
GroupExists = False
'Alle in der OU enthaltenen Gruppen durchgehen
For Each objGroup in OU
'klein geschriebenen Gruppennamen der betrachteten Gruppe
'mit klein geschriebenem übergebenen Gruppennamen vergleichen
If LCase(objGroup.sAMAccountName) = LCase(Group) Then
'bei Übereinstimmung gibt es die Gruppe bereits ...
GroupExists = True
'... und es müssen die weiteren Gruppen nicht mehr geprüft werden
Exit For
End If
Next
End Function
logtext.Close
Der fehler passiert in der 94 Zeile. Ich will das in der Logfile geschrieben wird, in welche Gruppen der Benutzer hinzugefügt wurde.
Aber es klappt nicht so ganz, In der Datei Steht drin: Der benutzer ist Mitglied folgener Gruppen "8"
Wieso er 8 nimmt ist mir nicht so ganz klar, da "i= Feld(3to7) ist.
Vielleicht kann mir einer sagen wo mein Denkfehler ist und mir ggf. ne Hilfestellungen geben kann.
Über Tipps wäre ich dankbar
Gruß und Danke
koluschkiB
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 144470
Url: https://administrator.de/contentid/144470
Ausgedruckt am: 15.11.2024 um 15:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo @koluschkiB,
Gruß
Snow
i
ist bloß der Zähler deiner Schleife. Du brauchst hier aber den Inhalt des Feld()
-ArraysGruß
Snow