nahemoth 10 Geschrieben 23. Juli 2011 Melden Teilen Geschrieben 23. Juli 2011 Hallo, ich würde gerne das aktuelle Expiration Date von verschiedenen Accounts aus der AD holen. Es soll zusätzlich die Möglichkeit bestehen, ein neues Auslaufdatum einzugeben, um einen Account aktivieren zu können. Ich habe bislang folgenden Ansatz verfolgt: Dim Benutzer() as String = {"User1", "User2"} ' Verbindung mit dem DC herstellen. Dim Server As New PrincipalContext(System.DirectoryServices.AccountManagement.ContextType.Domain, "DomainController") ' Ein leeres Benutzerobjekt erstellen. Dim User As New UserPrincipal(Server) For i As Integer = 0 To Benutzer.Length - 1 ' Suchkriterien zusammenstellen. User.SamAccountName = Benutzer(i) ' Filterobjekt erstellen, und zuweisen. Dim Filter As New PrincipalSearcher() Filter.QueryFilter = User ' Das Ergebnis in Result speichern. Dim Result As PrincipalSearchResult(Of Principal) = Filter.FindAll() ' In der Variable u sind alle Eigenschaften des Benutzerkontos enthalten. Select Case Benutzer(i) Case "User1" Label17.Text = User.AccountExpirationDate.ToString Case "User2" Label16.Text = User.AccountExpirationDate.ToString End Select Next aber die Felder sind immer leer. Wenn ich in Result Nachschaue, dann gibtr es da ein ... ahm, wie nennt mans ... Untermenü, oder so, System.directoryServices.AccountManagement.UserPrincipal, dort sind alle benötigten Infos drinn, aber wie komm ich da dran? Kann mir hier jemand weiterhelfen? Vielen Dank! Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 25. Juli 2011 Melden Teilen Geschrieben 25. Juli 2011 Ich habe jetzt kein VB Runtime hier, kann es also nicht testen. Aber warum erstellst du erst ein leeres Benutzerobjekt, um es dann zu füllen? Hier steckt vermutlich der Fehler: ' Filterobjekt erstellen, und zuweisen. Dim Filter As New PrincipalSearcher() Filter.QueryFilter = User Du weist hier dem Filter ein leeres Objekt zu, guck dir mal beim LDAP Syntax die Filterfunktion an. Weiter unten willst du aus dem User-Objekt deine Werte auslesen, du weist aber nirgens dem User-Objekt das Result-Set zu. Alles in allem ein bisschen durcheinander. Andere Frage. Muss es VB sein, oder könntest du auch mit was anderem leben? Zitieren Link zu diesem Kommentar
nahemoth 10 Geschrieben 26. Juli 2011 Autor Melden Teilen Geschrieben 26. Juli 2011 (bearbeitet) Hallo Mamamia, vielen Dank für deine Antwort. Das Durcheinander kommt daher, dass ich mich da erst gerade einarbeite und solche Sachen dann über Google und Coppy&Paste, also trial and error, löse. Wie weist man dem User-Objekt nun einen Benutzer zu? Ich würde da ja gerne in der Schleife mehrere Benutzer sequentiell verarbeiten. Ich habe hier noch einen Artikel gefunden, aber dort wird es wieder ganz anderst gelöst. Geht das auf "meinenm" Weg auch? Vielen Dank! edit: bin etwes weiter: Dim UserID As String Dim RootDSE As New DirectoryServices.DirectoryEntry("LDAP://RootDSE") Dim DomainDN As String = RootDSE.Properties("DefaultNamingContext").Value Dim ADEntry As New DirectoryServices.DirectoryEntry("LDAP://" & DomainDN) Dim objSearch As New System.DirectoryServices.DirectorySearcher(ADEntry) 'Dim ADSearchResult As System.DirectoryServices.SearchResult Dim oResults As DirectoryServices.SearchResultCollection Dim oResult As DirectoryServices.SearchResult 'Dim myresults As String Dim i As Integer i = 1 UserID = "schmidt" objSearch.PropertiesToLoad.Add("uid") objSearch.PropertiesToLoad.Add("givenname") objSearch.PropertiesToLoad.Add("cn") objSearch.PropertiesToLoad.Add("AccountExpirationDate") objSearch.Filter = ("(samAccountName=*" & UserID & "*)") oResults = objSearch.FindAll For Each oResult In oResults Label10.Text = oResult.GetDirectoryEntry.Properties("cn").Value.ToString MsgBox(oResult.GetDirectoryEntry.Properties("cn").Value.ToString) MsgBox(oResult.GetDirectoryEntry.Properties("AccountExpirationDate").Value.ToString) i = i + 1 Next so sollte ich doch auf das Auslaufdatum zugreiffen können, oder? den Namen gibt er jetzt richtig aus. bearbeitet 26. Juli 2011 von nahemoth Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.