【问题标题】:List of Active Directory users created on a specific date在特定日期创建的 Active Directory 用户列表
【发布时间】:2021-09-28 11:29:13
【问题描述】:
Public Class Filters
    Inherits AdvancedFilters
    Public Sub New(ByVal p As Principal)
        MyBase.New(p)
    End Sub
    Public Sub CreatedAfter(ByVal value As Date)
        Dim strValue = value.ToString("yyyyMMddHHmmss.0Z")
        AdvancedFilterSet("WhenCreated", strValue, GetType(String), MatchType.GreaterThanOrEquals)
    End Sub
End Class


 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Using context = New PrincipalContext(ContextType.Domain)
            Using userPrin As New UserPrincipal(context) With {
                .Enabled = True}
                Dim filter = New Filters(userPrin)
                filter.CreatedAfter(Date.UtcNow.AddDays(-20))
                For Each result In (New PrincipalSearcher(userPrin)).FindAll()
                    Dim de As DirectoryEntry = TryCast(result.GetUnderlyingObject(), DirectoryEntry)
                    Dim dn1 As String = de.Properties("CN")(0)
                    Dim dn2 As String = de.Properties("whenCreated")(0)
                    DataGridView1.Rows.Add(dn1, dn2)
                Next result
            End Using
        End Using
    End Sub

代码显示从当前日期起最近 20 天内创建的用户。

如何显示按从 DateTimePicker +20 天中选择的日期创建的用户列表。

例如:

DateTimePicker = 09/08/2021

用户列表应包括创建日期为 08/09/2021+20days (28/09/2021)的用户

【问题讨论】:

    标签: vb.net active-directory principalcontext


    【解决方案1】:

    找到了解决办法。如果有人告诉我如何做得更好,我将不胜感激。

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
           DataGridView1.Rows.Clear()
           Using context = New PrincipalContext(ContextType.Domain)
               Using userPrin As New UserPrincipal(context) With {
                   .Enabled = True}
                   Dim filter = New Filters(userPrin)
                  
                   Dim FirstDate As Date = DateTimePicker1.Value
                   Dim SecondDate As Date = DateTimePicker2.Value
                   Dim ts As TimeSpan = SecondDate.Subtract(FirstDate)
                   Dim differenceInDays As Integer = ts.Days
    
                   filter.CreatedAfter(SecondDate.AddDays(-differenceInDays - 1))
                   For Each result In (New PrincipalSearcher(userPrin)).FindAll()
                       Dim de As DirectoryEntry = TryCast(result.GetUnderlyingObject(), DirectoryEntry)
                       Dim dn1 As String = de.Properties("CN")(0)
                       Dim dn2 As String = de.Properties("whenCreated")(0)
                       DataGridView1.Rows.Add(dn1, dn2)
                   Next result
               End Using
           End Using
       End Sub
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-05
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多