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

Zugriff verweigert beim schreiben einer error.log mit vbs

Frage Entwicklung VB for Applications

Mitglied: koluschkiB

koluschkiB (Level 1) - Jetzt verbinden

10.06.2010 um 10:10 Uhr, 6159 Aufrufe, 3 Kommentare

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

01.
Option Explicit 
02.
 
03.
'Variablen des gesamten Scripts werden hier ind iesen 3 Zeilen Deklariert 
04.
Dim OU, objDomain, objOU, objUser, objGroup, WsHShell, CMD 
05.
Dim fso, f, Zeile, Feld, Vorname, Nachname, Abteilung, i, Passwort, Abfall, objFile, logfile, errfile, logText, errtext 
06.
Dim objFolder, strComputer, objWMIService, objNewShare, errReturn, PermL1 
07.
Const ForAppending = 8 
08.
 
09.
 
10.
'Organisationseinheit im AD wird gesetzt (benutzer) 
11.
OU = "cn=users,dc=testad,dc=int" 
12.
Set objOU = GetObject("LDAP://" & OU) 
13.
 
14.
'Werte für die Freigegebenen Ordner, gesharte Dateien sowie Maximal Anzahl gleichzeitiger Zugriffe 
15.
Dim File_Share 
16.
File_Share = 0 
17.
Dim MAXIMUM_CONNECTIONS 
18.
MAXIMUM_CONNECTIONS = 25 
19.
 
20.
 
21.
'Verbidnung zum WMI wird hergestellt (Root-Verzeichnis) 
22.
strComputer = "." 
23.
Set objWMIService = GetObject("winmgmts:" _ 
24.
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
25.
Set objNewShare = objWMIService.Get("Win32_Share") 
26.
 
27.
'Die Datei mit allen Benutzerangaben wird geladen 
28.
Set fso = CreateObject("Scripting.FileSystemObject") 
29.
Set f = fso.OpenTextFile("c:\user.csv",1,0) 
30.
 
31.
IF fso.FolderExists("C:\Helpdesk") then 
32.
		Set objFolder = fso.GetFolder("C:\Helpdesk") 
33.
ELSE 
34.
Set objFolder = fso.CreateFolder("C:\Helpdesk") 
35.
Wscript.Echo "Helpdeskordner wurde auf c:\ angelegt, in Ihm befindet sich die gesamte Doku!" 
36.
End if 
37.
 
38.
'1.Zeile der .csv Datei wird Übersprungen 
39.
Abfall = f.Readline   ' also die 1. Zeile   
40.
Do while not f.AtEndOfStream       'statt AtEndOfLine 
41.
 
42.
'Die Einzelnen Felder der .csv Datei werden gesetzt und zugeordnet 
43.
Zeile = f.readLine  
44.
Feld = split(Zeile,";") 
45.
Vorname = Feld(0) 
46.
Nachname = Feld(1) 
47.
Abteilung = Feld(2) 
48.
'        Gruppen werden in Schleife direkt angesprochen 
49.
'Gruppe1 = Feld(3) 
50.
'Gruppe2 = Feld(4) 
51.
'Gruppe3 = Feld(5) 
52.
'Gruppe4 = Feld(6) 
53.
'Gruppe5 = Feld(7) 
54.
 
55.
 
56.
'Variable zu Erstellung des Anmeldepassworts für die 1. Anmeldung  
57.
Passwort = left(Vorname,3)&left(Nachname,2)&"1234%" 
58.
Passwort = LCase(passwort) 
59.
 
60.
Set logfile = fso.CreateTextFile("C:\Helpdesk\" &Nachname&".log") 
61.
logfile.Close 
62.
 
63.
IF fso.FileExists("C:\Helpdesk\error.log") then 
64.
		Set objFile = fso.GetFile("C:\Helpdesk\error.log") 
65.
ELSE 
66.
Set errfile = fso.CreateTextFile("C:\Helpdesk\Error.log") 
67.
errfile.Close 
68.
End if 
69.
 
70.
 
71.
Set logtext = fso.OpenTextFile _ 
72.
("C:\Helpdesk\"&Nachname&".log", ForAppending, True) 
73.
Set errtext = fso.OpenTextFile _ 
74.
("C:\Helpdesk\error.log", ForAppending, True) 
75.
 
76.
'Infos für das AD, die dem User in den AD Eigenschaften zugeordnet werden 
77.
Set objUser = objOU.Create("user", "CN=" & Vorname & " " & Nachname) 
78.
objUser.Put "sAMAccountName", Nachname 
79.
objUser.Put "displayName", Vorname & " " & Nachname 
80.
objUser.Put "givenName", Vorname 
81.
objUser.Put "sn", Nachname 
82.
objUser.Put "description", Abteilung 
83.
objUser.Put "userPrincipalName", left(Vorname,3) & left(nachname,2) & "@testAD.int" 
84.
objUser.SetInfo 
85.
objUser.SetPassword Passwort 
86.
objUser.Put "userAccountControl", 544 
87.
objUser.Put "pwdLastSet", 0 
88.
objUser.SetInfo 
89.
 
90.
'Log-Datei mit Text füllen 
91.
logtext.WriteLine("Der Benutzer " &Vorname &" " &Nachname& " wurde im AD angelegt") 
92.
 
93.
'Die Function zur Erstellung der Gruppen aus Feld 3-7 wird aufgerufen und die Richtigen benutzer werden Zugeordnet 
94.
For i = 3 To 7 'alle Gruppen bearbeiten 
95.
If Feld(i) <> "" Then 
96.
If GroupExists(Feld(i), objOU) Then 
97.
Set objGroup = GetObject("LDAP://cn=" & Feld(i) & "," & OU) 
98.
Else 
99.
Set objGroup = objOU.Create("Group", "cn=" & Feld(i)) 
100.
objGroup.Put "sAMAccountName", Feld(i) 
101.
objGroup.SetInfo 
102.
End If 
103.
objGroup.Add objUser.ADSPath 
104.
End If 
105.
Next 
106.
 
107.
logtext.WriteLine("und ist Mitglied folgender Gruppen: 1." &Feld(3) &" 2. " &Feld(4) &" 3. " &Feld(5) &" 4. " &Feld(6) &" 5. " &Feld(7)) 
108.
logtext.WriteLine("Der Loginname des Benutzers lautet: " &Nachname) 
109.
logtext.WriteLine("Der Benutzer hat folgendes Passwort: " &Passwort) 
110.
 
111.
'Oberordner wird auf c:\ angelegt 
112.
IF fso.FolderExists("C:\Freigaben") then 
113.
         Set objFolder = fso.GetFolder("C:\Freigaben") 
114.
ELSE 
115.
Set objFolder = fso.CreateFolder("C:\Freigaben") 
116.
Wscript.Echo "Der Oberordner C:\Freigaben wurde angelegt! In Ihm befinden sich die Benutzerordner!" 
117.
END IF 
118.
 
119.
 
120.
'Benutzer spezifischer Ordner wird angelegt 
121.
IF fso.FolderExists("C:\Freigaben\" & Nachname) then 
122.
         'Msgbox ("Der Ordner mit dem Namen "&Nachname&" existiert bereits!") 
123.
		 errtext.WriteLine("Der Ordner " &Nachname& " existiert bereits und kann nicht angelegt werden") 
124.
         Set objFolder = fso.GetFolder("C:\Freigaben\" & Nachname) 
125.
	 
126.
ELSE 
127.
Set objFolder = fso.CreateFolder("C:\Freigaben\" & Nachname) 
128.
END IF 
129.
 
130.
errReturn = objNewShare.Create _ 
131.
    ("C:\Freigaben\" & Nachname, ""&Nachname, File_Share, _ 
132.
    MAXIMUM_CONNECTIONS, "Benutzerordner") 
133.
 
134.
	'WSH Shell für die Erstellung der Zugriffsrechte wird Erstellt 
135.
Set WshShell = WScript.CreateObject("WScript.Shell")    
136.
 
137.
'Ordnerzugriffe werden gesetzt (Admin= Voll, Inhaber= Voll) 
138.
PermL1 = "Administratoren:F " & Nachname & ":F"   
139.
CMD = "cmd /c echo j|cacls C:\Freigaben\" & Nachname & " /G " & PermL1 
140.
WshShell.Run CMD, 0, 1 
141.
Loop 
142.
 
143.
'Function für die Erstellung der Gruppen 
144.
Function GroupExists(Group, OU) 
145.
'OU wird als Objekt übergeben; es interessieren nur die enthaltenen Gruppen 
146.
OU.Filter = Array("group") 
147.
'Default: Gruppe noch nicht vorhanden 
148.
GroupExists = False 
149.
'Alle in der OU enthaltenen Gruppen durchgehen 
150.
For Each objGroup in OU 
151.
    'klein geschriebenen Gruppennamen der betrachteten Gruppe 
152.
    'mit klein geschriebenem übergebenen Gruppennamen vergleichen 
153.
    If LCase(objGroup.sAMAccountName) = LCase(Group) Then 
154.
        'bei Übereinstimmung gibt es die Gruppe bereits ... 
155.
        GroupExists = True 
156.
        '... und es müssen die weiteren Gruppen nicht mehr geprüft werden 
157.
        Exit For 
158.
    End If 
159.
Next 
160.
End Function 
161.
 
162.
logtext.Close 
163.
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
Mitglied: Snowman25
10.06.2010 um 10:16 Uhr
nach Zeile 64 musst du auch wieder schließen.
Bitte warten ..
Mitglied: TsukiSan
10.06.2010 um 10:17 Uhr
Hallo koluschiB

es fehlt in deinem Script das
01.
f.close
dann klappt's auch beim nächsten Durchlauf.

Gruss
Tsuki
Bitte warten ..
Mitglied: koluschkiB
10.06.2010 um 10:26 Uhr
Morgen Snowman & TsukiSan

und danke für die schnelle Antwort.

Hab dort ein errText.Close reingesetzt und siehe da

ES KLAPPT

Vielen Dank, werde mich sicherlich nochmal bei euch melden denn das Script ist noch nicht ganz fertig

Gruß und Danke

koluschkiB
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...