Nalimov Geschrieben 4. Juni 2003 Geschrieben 4. Juni 2003 Hallo Leute. Ich hab ein kleines Problem. Ich habe ein Script welches folgende Aufgabe löst. Alle Benutzer in unserem Linux-Netzwerk sollen automatisch in das AD von Windows Server 2003 übernommen werden. Nach einigem hin und her funktioniert das Script jetzt. Allerdings gibt es ein kleines Problem. In regelmäßigen Abständen sollen die Linux User und Windows User abgeglichen werden. Das heisst, ausgehend von unserem Linux-Netz soll folgendes geschehen: 1. User die in der passwd stehen sollen ins AD importiert werden (das funktioniert) 2. User die nicht in der passwd stehen, aber im AD sollen aus dem AD gelöscht werden (das geht noch nicht). Hat zum Punkt 2 irgendjemand Vorschläge wie man da rangehen kann? Mein bisheriges Skript sieht so aus: <job> <script language="VBSCript"> ' Liest die Datei "added.txt" von einer Network Share, die Benutzerinformationen ' im Standard Unix Password File format enthält und ' erstellt AD-Konten in der OE Students der Domain ' informatik.uni-erlangen.com. Das AD Konto hat denselben ' Benutyernamen wie das Unix Konto. Das Password wird auf einen ' Zufallswert gesetzt der bei der Anmeldung zu ändern ist ' ' Die Benutzer werden in der Gruppe "Imported Users" angelegt. ' ' Option Explicit On Error Resume Next Const ForReading = 1, ForAppending = 8 Dim adsUnit, adsUser, adsGroup, netObj, fso, tsInputFile, strLine, arrInput Dim strPassword, intUsers, logFile Randomize Timer ' Erstellen von Logfile in unten genanntem Pfad Set fso = CreateObject("Scripting.FileSystemObject") Set logFile = fso.OpenTextFile("c:\windows\userimport.log", ForAppending, True) ' Fehlerausgabe, wenn Log/File nicht erstellt/gelesen werden kann If Err Then WScript.Echo "Fehler: Kann Log-File nicht öffnen." & vbCrLf & "Error # " & CStr(Err.Number) & " " & Err.Description WScript.Quit End If ' Logfileeintrag. Beginn des eigentlichen Programms und öffnen der Datei added.txt logFile.WriteLine "Benutzerimport gestartet" & Now Set tsInputFile = fso.OpenTextFile("\\server\share\added.txt", ForReading, False) ' Fehlerausgabe wenn spasswd nicht gefunden und Programmabbruch If Err Then logFile.WriteLine "Fehler: Konnte das Eingabefile nicht öffnen. (Error # " & CStr(Err.Number) & " " & Err.Description & ")" logFile.Close WScript.Quit End If 'Folgende Befehle greifen jeweils auf die OLE-Objekte im AD zu (hier Students und Imported Users) 'und schreibt eine Fehlermeldung in das log-File falls dieser 'Zugriff nicht moeglich ist. Im Fehlerfall wird das Script beendet Set adsUnit = GetObject("LDAP://ou=Students,dc=i4testdomain,dc=informatik,dc=uni-erlangen,dc=com") If Err Then logFile.WriteLine "Fehler: Kein Zugriff auf gewünschete OE des AD. (Error # " & CStr(Err.Number) & " " & Err.Description & ")" logFile.Close WScript.Quit End If Set adsGroup = GetObject("LDAP://cn=Imported Users,ou=Students,dc=i4testdomain,dc=informatik,dc=uni-erlangen,dc=com") If Err Then logFile.WriteLine "Fehler: Die AD-Gruppe Imported Users konnte nicht geöffnet werden. (Error # " & CStr(Err.Number) & " " & Err.Description & ")" logFile.Close WScript.Quit End If intUsers = 0 While Not tsInputFile.AtEndOfStream Err.Clear '********************************************************************** 'Lesen einer Zeile und Benutzung der "Split Funktion" zum Aufteilen 'des Datensatzes in seine einzelnen Teile '********************************************************************** strLine = tsInputFile.ReadLine arrInput = Split(strLine, ":") Set adsUser = adsUnit.Create("user","cn=" & arrInput(0)) adsUser.Put "sAMAccountName", arrInput(0) adsUser.Put "userPrincipalName", arrInput(0) & "@informatik.uni-erlangen.com" adsUser.SetInfo If Err Then if Err.Number <> -2147019886 Then 'Log Eintrag falls andere Fehlermeldung als "User existiert bereits" logFile.WriteLine "Fehler: Benutzer konnte nicht angelegt werden" & arrInput(0) & " (Error # " & CStr(Err.Number) & " " & Err.Description & ")" End If Else 'Success adsUser.GetInfo intUsers = intUsers + 1 'Umgebungsvariablen setzen adsUser.AccountDisabled = False adsUser.IsAccountLocked = False adsUser.DisplayName = arrInput(4) adsUser.Put "pwdLastSet", CLng(-1) adsUser.SetInfo 'Passwort auf einen Zufallswert setzen strPassword = Mid (CStr(Rnd), 3, 6) adsUser.SetPassword strPassword 'Benutzer in der Gruppe "Imported Users" anlegen adsGroup.Add (adsUser.ADsPath) Set adsUser = Nothing End If Wend tsInputFile.Close 'Logfile Eintrag und Ende des Programms logFile.WriteLine intUsers & " Benutzer angelegt." logFile.WriteLine "Benutzerimport fertiggestellt" & Now logFile.close </script> </job> Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.