• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 952
  • Last Modified:

Filter VB.NET AD request by whenCreated

I have program that will allow some end-users to export some data from AD.  The problem I am running into is with my search code for the "whenCreate" field.  I am trying to export last 7 Days, 14 Days, and 30 Days worth of data, but just cant seem to get it to work.
mySearcher.Filter = "(&(objectClass=User)(whenCreated=Today.Now - 7))"
0
james_martin
Asked:
james_martin
  • 6
  • 4
1 Solution
 
Chris DentPowerShell DeveloperCommented:

Hey,

The date you use must be in Universal Time format:

yyyymmddhhnnss.0Z

Perhaps like this (but there may well be much more efficient ways):

        Dim dateString As String = Date.Now.ToString("u")
        Dim RegExp As New Regex("-|:| ")
        dateString = RegExp.Replace(dateString, "")
        dateString = dateString.Replace("Z", ".0Z")
        Console.WriteLine(dateString)

You're also unlikely to get an exact match on that, many many seconds in the day and you'd have to be down to that. So this...

"(&(objectClass=User)(whenCreated>=" & dateString & "))"

Or this:

"(&(objectClass=User)(whenCreated<=" & dateString & "))"

Chris
0
 
Mohed SharfiVice CEOCommented:
Hi james_martin,
please try this code(snippet)
thanks
 mySearcher.Filter = "(&(objectCategory=user)(whencreated>=Today.Now - 7))"

Open in new window

0
 
james_martinAuthor Commented:
Chris,
This declaration "Dim RegExp As New Regex("-|:| ")" is giving me an issue; "Regex" is back as not defined, how should I define it?

Thanks.
0
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

 
Chris DentPowerShell DeveloperCommented:

Sorry... Needs the namespace importing:

Imports System.Text.RegularExpressions

Otherwise it won't like it :)

Chris
0
 
Chris DentPowerShell DeveloperCommented:

Oh and I forgot the -7 days part, it'll need adding back in. Got distracted ;)

Chris
0
 
Chris DentPowerShell DeveloperCommented:

And I neglected to put in the "how to find a days worth" bit. Have the code generate something like this:

(&(objectClass=User)(whenCreated>=20090623000000.0Z)(whenCreated<=20090624000000.0Z))

Then you get those in the specified range :)

Chris
0
 
james_martinAuthor Commented:
Chris,
Is this the correct use?
mySearcher.Filter = "(&(objectClass=User)(whenCreated<=" & dateString(-7) & "))"
0
 
james_martinAuthor Commented:
sorry it reformatted it.

mySearcher.Filter = "(&(objectClass=User)(whenCreated<=" & dateString(-7) & "))"

Open in new window

0
 
Chris DentPowerShell DeveloperCommented:

Not if you used mine above, dateString is a String so can't use date functions on it any more. The -7 needs to be done to the date prior to converting to a universal date string (.ToString("u")).

Chris
0
 
Chris DentPowerShell DeveloperCommented:

Lets see... given my limited knowledge of actual programming... I would do something like the below (just a little console app built to test this code).

Chris
Imports System.DateTime
Imports System.Text.RegularExpressions
 
Module Module1
    Function DateToUniversalDateString(ByVal dtmDate As Date)
        Dim strDate As String = dtmDate.ToString("u")
        Dim RegExp As New Regex("-|:| ")
        strDate = RegExp.Replace(strDate, "")
        strDate = strDate.Replace("Z", ".0Z")
        DateToUniversalDateString = strDate
    End Function
 
    Sub Main()
        Dim dtmStartDate As Date = Today.AddDays(-7)
        Dim dtmEndDate As Date = Today.AddDays(-6)
 
        Dim strLdapFilter As String = _
          "(&(objectClass=user)(objectCategory=person)(whenCreated>=" & _
          DateToUniversalDateString(dtmStartDate) & ")(whenCreated<=" & _
          DateToUniversalDateString(dtmEndDate) & "))"
 
        Console.WriteLine(strLdapFilter)
    End Sub
 
End Module

Open in new window

0
 
james_martinAuthor Commented:
Limited knowledge huh????  Well you rock and thanks very much!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 6
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now