AD-User Password ändern Problem

  • VB.NET
  • .NET (FX) 4.5–4.8

    AD-User Password ändern Problem

    Hallo,
    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

    1. 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)
    2. Using Connect = New PrincipalContext(ContextType.Domain, Domain, BaseDN), newUser = New UserPrincipal(Connect, Username, Password, True),
    3. toGroup = GroupPrincipal.FindByIdentity(Connect, IdentityType.Name, MailGroup)
    4. newUser.GivenName = FirstName
    5. newUser.Surname = LastName
    6. newUser.Name = Fullname
    7. newUser.DisplayName = Fullname
    8. newUser.UserPrincipalName = Username & Principal
    9. newUser.EmailAddress = Email
    10. newUser.Description = Password
    11. newUser.Save()
    12. If toGroup IsNot Nothing Then
    13. toGroup.Members.Add(Connect, IdentityType.Name, newUser.Name)
    14. toGroup.Save()
    15. End If
    16. End Using
    17. End Sub

    Mit folgendem Code kann ich nun eine Liste erstellen, aller User aus der BaseDN-Variablen:

    VB.NET-Quellcode

    1. Public Sub SaveUserList()
    2. Dim listEntry As String = ""
    3. Dim HeadLine As String = "Name;Username;Initial-PassWord;Email" & NewLine
    4. Using Connect = New PrincipalContext(ContextType.Domain, Domain, BaseDN), usrSearch = New PrincipalSearcher(New UserPrincipal(Connect)), sr As New StreamWriter("C:\Users\mhoffmann\Documents\UserList.txt")
    5. sr.Write(HeadLine)
    6. For Each usr As UserPrincipal In usrSearch.FindAll()
    7. listEntry = String.Concat(usr.DisplayName, ";", usr.SamAccountName, ";", usr.Description, ";", usr.EmailAddress, NewLine)
    8. sr.Write(listEntry)
    9. Next
    10. End Using
    11. End Sub

    Das funktioniert auch bestens.
    Nun wollte ich gerne das Initial-PW aller User der BaseDN-Variablen ändern:

    VB.NET-Quellcode

    1. Public Sub SetNewPassword()
    2. Using Connect = New PrincipalContext(ContextType.Domain, Domain, BaseDN), usrSearch = New PrincipalSearcher(New UserPrincipal(Connect))
    3. For Each usr As UserPrincipal In usrSearch.FindAll()
    4. Dim pw As String = CreatePassword(10)
    5. usr.Description = pw
    6. usr.SetPassword(pw)
    7. Next
    8. End Using
    9. 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..."