Kontakt-Objekt zu User-Objekt konvertieren
Guten Tag
In unserem AD existieren eine Kontakte, die von Externen Personen für eine Plattform benötigt werden.
Wir würden nun gerne für diese Kontakte richtige User erstellen und das so verwalten.
Gibt es irgendein Programm oder eine Methode um diese Kontakte-Objekte (lediglich Vorname, Nachname, Displayname und groups vorhanden) in User-Objekte zu konvertieren?
Es sind über 100 Kontakte, darum würde ich das gerne automatisiert machen...
Passwort kann ich danach noch mit einem Script verteilen
Kann mir da jemand weiterhelfen?
In unserem AD existieren eine Kontakte, die von Externen Personen für eine Plattform benötigt werden.
Wir würden nun gerne für diese Kontakte richtige User erstellen und das so verwalten.
Gibt es irgendein Programm oder eine Methode um diese Kontakte-Objekte (lediglich Vorname, Nachname, Displayname und groups vorhanden) in User-Objekte zu konvertieren?
Es sind über 100 Kontakte, darum würde ich das gerne automatisiert machen...
Passwort kann ich danach noch mit einem Script verteilen
Kann mir da jemand weiterhelfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 97538
Url: https://administrator.de/forum/kontakt-objekt-zu-user-objekt-konvertieren-97538.html
Ausgedruckt am: 23.12.2024 um 18:12 Uhr
3 Kommentare
Neuester Kommentar
Mit folgendem VBS-Script solltest du das einfach und automatisch lösen können:
Du musst noch die OU's anpassen, einmal dort wo die Kontakte drin liegen("folderContacts"), und dann noch eine OU wo die User reinkommen sollen("targetOU").
Das Script übernimmt auch die bisherigen Gruppenmitgliedschaften des Kontakts für den User. Wie der LoginName aussehen soll kannst du auch auf deine Bedürfnisse zuschneiden, habe als Beispiel folgendes genommen: [Vorname][Nachname]
Dieses nächste Script ließt auch gleich die jeweiligen Passwörter aus einer Textdatei namens "passwords.txt" im gleichen Verzeichnis und vergibt jedem User sein Passwort. Die Textdatei sollte so strukturiert sein:
Für jeden Benutzer eine Zeile: [Name des Kontakts];[Passwort]
D.h. mit Semikolon getrennt.
Viel Spaß damit
Du musst noch die OU's anpassen, einmal dort wo die Kontakte drin liegen("folderContacts"), und dann noch eine OU wo die User reinkommen sollen("targetOU").
Das Script übernimmt auch die bisherigen Gruppenmitgliedschaften des Kontakts für den User. Wie der LoginName aussehen soll kannst du auch auf deine Bedürfnisse zuschneiden, habe als Beispiel folgendes genommen: [Vorname][Nachname]
On Error Resume Next
'Password für Beutzer
strInitialPassword = "Geheim"
'Organizational Unit in der die Kontakte drin sind
Set folderContacts = GetObject("LDAP://ou=Kontakte,dc=sbs2003,dc=local")
'Organizational Unit in der die User erstellt werden sollen
Set targetOU = GetObject("LDAP://ou=users,ou=Kontakte,dc=sbs2003,dc=local")
'Nur "Contact"-Objekte auswählen
folderContacts.Filter = Array("contact")
'Für jeden Kontakt einen User erstellen
For Each contact In folderContacts
'erstellt den Login-Namen / kann hier angepasst werden
LoginName = contact.GivenName & contact.sn
'User in targetOU erstellen
Set objUser = targetOU.Create("User", contact.Name)
'Login-Namen
objUser.Put "sAMAccountName", LoginName
'Speichere Property-Cache ins Benutzerobjekt (erstelle User)
objUser.SetInfo
'Setze die Gruppenmitgliedschaften für den Benutzer
groups = contact.GetEx("memberOf")
For i = 0 To UBound(groups)
Set grp = GetObject("LDAP://" & groups(i))
grp.Add objUser.ADSPath
Next
'Password setzen
objUser.SetPassword strInitialPassword
'Benutzer muss Password bei nächstem Logon ändern
objUser.Put "pwdLastSet", 0
'Account ist aktiviert
objUser.AccountDisabled = False
'Speichere Property-Cache ins Benutzerobjekt
objUser.SetInfo
Next
Dieses nächste Script ließt auch gleich die jeweiligen Passwörter aus einer Textdatei namens "passwords.txt" im gleichen Verzeichnis und vergibt jedem User sein Passwort. Die Textdatei sollte so strukturiert sein:
Für jeden Benutzer eine Zeile: [Name des Kontakts];[Passwort]
D.h. mit Semikolon getrennt.
On Error Resume Next
Set objFS = CreateObject("scripting.FileSystemObject")
Set oDic = CreateObject("scripting.dictionary")
Set pwdFile = objFS.OpenTextFile("passwords.txt",1)
Do While pwdFile.AtEndOfStream <> True
line = Split(pwdFile.ReadLine,";")
user = Trim(line(0))
password = Trim(line(1))
oDic.Add user, password
Loop
pwdFile.Close
'Organizational Unit in der die Kontakte drin sind
Set folderContacts = GetObject("LDAP://ou=Kontakte,dc=sbs2003,dc=local")
'Organizational Unit in der die User erstellt werden sollen
Set targetOU = GetObject("LDAP://ou=users,ou=Kontakte,dc=sbs2003,dc=local")
'Nur "Contact"-Objekte auswählen
folderContacts.Filter = Array("contact")
'Für jeden Kontakt einen User erstellen
For Each contact In folderContacts
'erstellt den Login-Namen / kann hier angepasst werden
LoginName = contact.GivenName & contact.sn
'User in targetOU erstellen
Set objUser = targetOU.Create("User", contact.Name)
'Login-Namen
objUser.Put "sAMAccountName", LoginName
'Speichere Property-Cache ins Benutzerobjekt (erstelle User)
objUser.SetInfo
'Setze die Gruppenmitgliedschaften für den Benutzer
groups = contact.GetEx("memberOf")
For i = 0 To UBound(groups)
Set grp = GetObject("LDAP://" & groups(i))
grp.Add objUser.ADSPath
Next
If oDic.Exists(contact.cn) Then
objUser.SetPassword oDic.Item(Trim(contact.cn)
End If
'Benutzer muss Password bei nächstem Logon ändern
objUser.Put "pwdLastSet", 0
'Account ist aktiviert
objUser.AccountDisabled = False
'Speichere Property-Cache ins Benutzerobjekt
objUser.SetInfo
Next
Viel Spaß damit