Zugriff verweigert beim schreiben einer error.log mit vbs
Morgen Admins
hab da ein kleines Problem ...mal wieder!!!
Ich hab ein Script was im AD USer udn Gruppen anlegt, sowie Benutzerordner mit denn nötigen Netzwerkfreigaben.
Da alles in .log files dokumentiert werden soll, habe ich solche befehle in meinen Quelltext eingebaut.
Hab aber nun Folgendes Problem:
Wenn cih mein Script ausführe, läuft es einmal durch. Stellt fest dass der Ordner mit Namen XY bereist existiert, diesen Fehler soll er dann in der Error.log dokumentieren.
Beim Ersten User klappts Super, beim zweiten leider nicht.
Man sagte mri bereits, dass die Ursache darin besteht, dass diese error.log noch offen sei. Dabei wird sie nach dem ersten kompletten durchlauf geschlossen.
Häng also an diesem Blöden ding fest und weiss nicht weiter
Der fehler befinet sich in der Zeile 73 ---> Zugriff Verweigert.
Hab schon alle Variablen überprüft aufschriebweise usw. aber dies führte es nicht zum gewünschtem erfolg
hoffe einer von euch sieht den Fehler und kann mir evtl nen Tipp geben
Gruß und Danke im vorraus
koluschkiB
hab da ein kleines Problem ...mal wieder!!!
Ich hab ein Script was im AD USer udn Gruppen anlegt, sowie Benutzerordner mit denn nötigen Netzwerkfreigaben.
Da alles in .log files dokumentiert werden soll, habe ich solche befehle in meinen Quelltext eingebaut.
Hab aber nun Folgendes Problem:
Wenn cih mein Script ausführe, läuft es einmal durch. Stellt fest dass der Ordner mit Namen XY bereist existiert, diesen Fehler soll er dann in der Error.log dokumentieren.
Beim Ersten User klappts Super, beim zweiten leider nicht.
Man sagte mri bereits, dass die Ursache darin besteht, dass diese error.log noch offen sei. Dabei wird sie nach dem ersten kompletten durchlauf geschlossen.
Häng also an diesem Blöden ding fest und weiss nicht weiter
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, errtext
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)
IF fso.FolderExists("C:\Helpdesk") then
Set objFolder = fso.GetFolder("C:\Helpdesk")
ELSE
Set objFolder = fso.CreateFolder("C:\Helpdesk")
Wscript.Echo "Helpdeskordner wurde auf c:\ angelegt, in Ihm befindet sich die gesamte Doku!"
End if
'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:\Helpdesk\" &Nachname&".log")
logfile.Close
IF fso.FileExists("C:\Helpdesk\error.log") then
Set objFile = fso.GetFile("C:\Helpdesk\error.log")
ELSE
Set errfile = fso.CreateTextFile("C:\Helpdesk\Error.log")
errfile.Close
End if
Set logtext = fso.OpenTextFile _
("C:\Helpdesk\"&Nachname&".log", ForAppending, True)
Set errtext = fso.OpenTextFile _
("C:\Helpdesk\error.log", ForAppending, True)
'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
'Log-Datei mit Text füllen
logtext.WriteLine("Der Benutzer " &Vorname &" " &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("und ist Mitglied folgender Gruppen: 1." &Feld(3) &" 2. " &Feld(4) &" 3. " &Feld(5) &" 4. " &Feld(6) &" 5. " &Feld(7))
logtext.WriteLine("Der Loginname des Benutzers lautet: " &Nachname)
logtext.WriteLine("Der Benutzer hat folgendes Passwort: " &Passwort)
'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!")
errtext.WriteLine("Der Ordner " &Nachname& " existiert bereits und kann nicht angelegt werden")
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
errtext.Close
Der fehler befinet sich in der Zeile 73 ---> Zugriff Verweigert.
Hab schon alle Variablen überprüft aufschriebweise usw. aber dies führte es nicht zum gewünschtem erfolg
hoffe einer von euch sieht den Fehler und kann mir evtl nen Tipp geben
Gruß und Danke im vorraus
koluschkiB
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 144547
Url: https://administrator.de/contentid/144547
Ausgedruckt am: 15.11.2024 um 15:11 Uhr
3 Kommentare
Neuester Kommentar