Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VB Script zum importieren von Unix Usern ins Active Directory

Empfohlene Antworten

Veröffentlicht

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>

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.