Hallo,
ich möchte bei mehreren Usern das Initial-Passwort ändern.
Um die User anzulegen, hatte ich mir folgenden Code geschrieben, der einwandfrei funktioniert:
Mit folgendem Code kann ich nun eine Liste erstellen, aller User aus der BaseDN-Variablen:
Das funktioniert auch bestens.
Nun wollte ich gerne das Initial-PW aller User der BaseDN-Variablen ändern:
Leider tut sich da garnix.
Steppe ich mit Haltepunkt durch den Code, erhalte ich in jedem Durchlauf ein neues PW und einen User aus der Liste, aber leider wird weder die Description geändert, noch das Kennwort.
Wo liegt denn der Fehler?
EDIT: Sorry, Fehler gerade selber gefunden*andenKopfklatsch* da fehlte ein
ich möchte bei mehreren Usern das Initial-Passwort ändern.
Um die User anzulegen, hatte ich mir folgenden Code geschrieben, der einwandfrei funktioniert:
VB.NET-Quellcode
- Private Sub CreateUser(ByVal Fullname As String, ByVal Username As String, ByVal FirstName As String, ByVal LastName As String, ByVal Password As String, ByVal Email As String)
- Using Connect = New PrincipalContext(ContextType.Domain, Domain, BaseDN), newUser = New UserPrincipal(Connect, Username, Password, True),
- toGroup = GroupPrincipal.FindByIdentity(Connect, IdentityType.Name, MailGroup)
- newUser.GivenName = FirstName
- newUser.Surname = LastName
- newUser.Name = Fullname
- newUser.DisplayName = Fullname
- newUser.UserPrincipalName = Username & Principal
- newUser.EmailAddress = Email
- newUser.Description = Password
- newUser.Save()
- If toGroup IsNot Nothing Then
- toGroup.Members.Add(Connect, IdentityType.Name, newUser.Name)
- toGroup.Save()
- End If
- End Using
- End Sub
Mit folgendem Code kann ich nun eine Liste erstellen, aller User aus der BaseDN-Variablen:
VB.NET-Quellcode
- Public Sub SaveUserList()
- Dim listEntry As String = ""
- Dim HeadLine As String = "Name;Username;Initial-PassWord;Email" & NewLine
- Using Connect = New PrincipalContext(ContextType.Domain, Domain, BaseDN), usrSearch = New PrincipalSearcher(New UserPrincipal(Connect)), sr As New StreamWriter("C:\Users\mhoffmann\Documents\UserList.txt")
- sr.Write(HeadLine)
- For Each usr As UserPrincipal In usrSearch.FindAll()
- listEntry = String.Concat(usr.DisplayName, ";", usr.SamAccountName, ";", usr.Description, ";", usr.EmailAddress, NewLine)
- sr.Write(listEntry)
- Next
- End Using
- End Sub
Das funktioniert auch bestens.
Nun wollte ich gerne das Initial-PW aller User der BaseDN-Variablen ändern:
VB.NET-Quellcode
- Public Sub SetNewPassword()
- Using Connect = New PrincipalContext(ContextType.Domain, Domain, BaseDN), usrSearch = New PrincipalSearcher(New UserPrincipal(Connect))
- For Each usr As UserPrincipal In usrSearch.FindAll()
- Dim pw As String = CreatePassword(10)
- usr.Description = pw
- usr.SetPassword(pw)
- Next
- End Using
- End Sub
Leider tut sich da garnix.
Steppe ich mit Haltepunkt durch den Code, erhalte ich in jedem Durchlauf ein neues PW und einen User aus der Liste, aber leider wird weder die Description geändert, noch das Kennwort.
Wo liegt denn der Fehler?
EDIT: Sorry, Fehler gerade selber gefunden*andenKopfklatsch* da fehlte ein
usr.Save()
"Hier könnte Ihre Werbung stehen..."