Zum Inhalt springen

VB Script zum importieren von Unix Usern ins Active Directory


Empfohlene Beiträge

Geschrieben

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>

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...