Home All Groups Group Topic Archive Search About

list all users created today



Author
2 Oct 2007 3:29 PM
Simon G
Hello all.

I have an ou in which all new users are created. I currently have a script
which will list all the members of the ou and some of their attributes.

What i want to do is to be able to list this, but only for users who have
been created today.

Here is the script i am currently using - how can i include the "where user
was created today" statement?

on error resume next

Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objNewFile = objFS.CreateTextFile("newstarters.csv")

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = _
    "SELECT ADsPath FROM 'LDAP://ou=new starters,,DC=domain,DC=com' WHERE " _
        & "objectCategory='user'" 
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst
objnewfile.writeline "samaccountname" & "," & "givenname" & "," & "sn" & ","
& "description"
Do Until objRecordSet.EOF
    strPath = objRecordSet.Fields("ADsPath").Value
    Set objuser = GetObject(strPath)

objNewFile.WriteLine objuser.samaccountname & "," & objuser.givenname & ","
& objuser.sn & "," & objuser.description
    objRecordSet.MoveNext
Loop

Author
2 Oct 2007 5:52 PM
Richard Mueller [MVP]
Show quote
"Simon G" <Sim***@discussions.microsoft.com> wrote in message
news:18349334-27A4-4F68-86CF-3393C81E8568@microsoft.com...
> Hello all.
>
> I have an ou in which all new users are created. I currently have a script
> which will list all the members of the ou and some of their attributes.
>
> What i want to do is to be able to list this, but only for users who have
> been created today.
>
> Here is the script i am currently using - how can i include the "where
> user
> was created today" statement?
>
> on error resume next
>
> Const ADS_SCOPE_SUBTREE = 2
>
> Set objConnection = CreateObject("ADODB.Connection")
> Set objCommand =   CreateObject("ADODB.Command")
> objConnection.Provider = "ADsDSOObject"
> objConnection.Open "Active Directory Provider"
> Set objCommand.ActiveConnection = objConnection
> Set objFS = CreateObject("Scripting.FileSystemObject")
> Set objNewFile = objFS.CreateTextFile("newstarters.csv")
>
> objCommand.Properties("Page Size") = 1000
> objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
>
> objCommand.CommandText = _
>    "SELECT ADsPath FROM 'LDAP://ou=new starters,,DC=domain,DC=com' WHERE "
> _
>        & "objectCategory='user'"
> Set objRecordSet = objCommand.Execute
>
> objRecordSet.MoveFirst
> objnewfile.writeline "samaccountname" & "," & "givenname" & "," & "sn" &
> ","
> & "description"
> Do Until objRecordSet.EOF
>    strPath = objRecordSet.Fields("ADsPath").Value
>    Set objuser = GetObject(strPath)
>
> objNewFile.WriteLine objuser.samaccountname & "," & objuser.givenname &
> ","
> & objuser.sn & "," & objuser.description
>    objRecordSet.MoveNext
> Loop

If today is 20071002000000 (yyyymmddhhnnss) then you can use:

"SELECT ADsPath FROM 'LDAP://ou=new starters,DC=domain,DC=com' " _
    & " WHERE objectCategory='person' " _
        & "AND objectClass='user' " _
        & "whenCreated>='20071001000000.0Z'"

I use objectCategory=person and objectClass=user to omit contact objects and
computers. The ".0Z" means UTC, so you may need to adjust for your time
zone. For an offset (differential) of +5 hours, it would be:

"whenCreated>='20071001000000.0+0500'"

The formula is:

GMT=Local+differential

Where GMT is the old acronym for UTC (Coordinated Universal Time in French)
and Local is the local time (in your time zone). Ordinarily these few hours
don't matter, but if you are searching for objects created since midnight,
it can matter.

--
Richard Mueller
Microsoft MVP Scripting and ADSI
Hilltop Lab - http://www.rlmueller.net
--
Author
3 Oct 2007 8:48 AM
Simon G
thanks as always Richard.

Is there anyway that the date can be dynamic, so the script uses some kind
of getdate function, as opposed to me having to amend the date each time.

Failing that, is it possible to have a simple input box appear and the date
is manually entered and then use the varaible in the whencreated >= part
rather than the text?

Show quote
"Richard Mueller [MVP]" wrote:

>
> "Simon G" <Sim***@discussions.microsoft.com> wrote in message
> news:18349334-27A4-4F68-86CF-3393C81E8568@microsoft.com...
> > Hello all.
> >
> > I have an ou in which all new users are created. I currently have a script
> > which will list all the members of the ou and some of their attributes.
> >
> > What i want to do is to be able to list this, but only for users who have
> > been created today.
> >
> > Here is the script i am currently using - how can i include the "where
> > user
> > was created today" statement?
> >
> > on error resume next
> >
> > Const ADS_SCOPE_SUBTREE = 2
> >
> > Set objConnection = CreateObject("ADODB.Connection")
> > Set objCommand =   CreateObject("ADODB.Command")
> > objConnection.Provider = "ADsDSOObject"
> > objConnection.Open "Active Directory Provider"
> > Set objCommand.ActiveConnection = objConnection
> > Set objFS = CreateObject("Scripting.FileSystemObject")
> > Set objNewFile = objFS.CreateTextFile("newstarters.csv")
> >
> > objCommand.Properties("Page Size") = 1000
> > objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
> >
> > objCommand.CommandText = _
> >    "SELECT ADsPath FROM 'LDAP://ou=new starters,,DC=domain,DC=com' WHERE "
> > _
> >        & "objectCategory='user'"
> > Set objRecordSet = objCommand.Execute
> >
> > objRecordSet.MoveFirst
> > objnewfile.writeline "samaccountname" & "," & "givenname" & "," & "sn" &
> > ","
> > & "description"
> > Do Until objRecordSet.EOF
> >    strPath = objRecordSet.Fields("ADsPath").Value
> >    Set objuser = GetObject(strPath)
> >
> > objNewFile.WriteLine objuser.samaccountname & "," & objuser.givenname &
> > ","
> > & objuser.sn & "," & objuser.description
> >    objRecordSet.MoveNext
> > Loop
>
> If today is 20071002000000 (yyyymmddhhnnss) then you can use:
>
> "SELECT ADsPath FROM 'LDAP://ou=new starters,DC=domain,DC=com' " _
>     & " WHERE objectCategory='person' " _
>         & "AND objectClass='user' " _
>         & "whenCreated>='20071001000000.0Z'"
>
> I use objectCategory=person and objectClass=user to omit contact objects and
> computers. The ".0Z" means UTC, so you may need to adjust for your time
> zone. For an offset (differential) of +5 hours, it would be:
>
> "whenCreated>='20071001000000.0+0500'"
>
> The formula is:
>
> GMT=Local+differential
>
> Where GMT is the old acronym for UTC (Coordinated Universal Time in French)
> and Local is the local time (in your time zone). Ordinarily these few hours
> don't matter, but if you are searching for objects created since midnight,
> it can matter.
>
> --
> Richard Mueller
> Microsoft MVP Scripting and ADSI
> Hilltop Lab - http://www.rlmueller.net
> --
>
>
>
Author
3 Oct 2007 12:28 PM
Richard Mueller [MVP]
Takes a bit of work to construct the date in the correct format, but below
should work:
============
dtmToday = Date()
dtmYesterday = DateAdd("d", dtmToday, -1)

strYear = CStr(Year(dtmYesterday))
strMonth = Right("0" & CStr(Month(dtmYesterday)), 2)
strDay = Right("0" & CStr(Day(dtmYesterday)), 2)
strYesterday = strYear & strMonth & strDay & "000000.Z"

objCommand.CommandText = _
    "SELECT ADsPath FROM 'LDAP://ou=new starters,DC=domain,DC=com' " _
        & " WHERE objectCategory='person' " _
            & "AND objectClass='user' " _
            & "AND whenCreated>='" & strYesterday & "'"
================
In my previous post, I believe I missed the second "AND" in the "WHERE"
clause above.

--
Richard Mueller
Microsoft MVP Scripting and ADSI
Hilltop Lab - http://www.rlmueller.net
--

Show quote
"Simon G" <Sim***@discussions.microsoft.com> wrote in message
news:7B41E6CB-A9DD-4315-9AD0-94D0BABC87B7@microsoft.com...
> thanks as always Richard.
>
> Is there anyway that the date can be dynamic, so the script uses some kind
> of getdate function, as opposed to me having to amend the date each time.
>
> Failing that, is it possible to have a simple input box appear and the
> date
> is manually entered and then use the varaible in the whencreated >= part
> rather than the text?
>
> "Richard Mueller [MVP]" wrote:
>
>>
>> "Simon G" <Sim***@discussions.microsoft.com> wrote in message
>> news:18349334-27A4-4F68-86CF-3393C81E8568@microsoft.com...
>> > Hello all.
>> >
>> > I have an ou in which all new users are created. I currently have a
>> > script
>> > which will list all the members of the ou and some of their attributes.
>> >
>> > What i want to do is to be able to list this, but only for users who
>> > have
>> > been created today.
>> >
>> > Here is the script i am currently using - how can i include the "where
>> > user
>> > was created today" statement?
>> >
>> > on error resume next
>> >
>> > Const ADS_SCOPE_SUBTREE = 2
>> >
>> > Set objConnection = CreateObject("ADODB.Connection")
>> > Set objCommand =   CreateObject("ADODB.Command")
>> > objConnection.Provider = "ADsDSOObject"
>> > objConnection.Open "Active Directory Provider"
>> > Set objCommand.ActiveConnection = objConnection
>> > Set objFS = CreateObject("Scripting.FileSystemObject")
>> > Set objNewFile = objFS.CreateTextFile("newstarters.csv")
>> >
>> > objCommand.Properties("Page Size") = 1000
>> > objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
>> >
>> > objCommand.CommandText = _
>> >    "SELECT ADsPath FROM 'LDAP://ou=new starters,,DC=domain,DC=com'
>> > WHERE "
>> > _
>> >        & "objectCategory='user'"
>> > Set objRecordSet = objCommand.Execute
>> >
>> > objRecordSet.MoveFirst
>> > objnewfile.writeline "samaccountname" & "," & "givenname" & "," & "sn"
>> > &
>> > ","
>> > & "description"
>> > Do Until objRecordSet.EOF
>> >    strPath = objRecordSet.Fields("ADsPath").Value
>> >    Set objuser = GetObject(strPath)
>> >
>> > objNewFile.WriteLine objuser.samaccountname & "," & objuser.givenname &
>> > ","
>> > & objuser.sn & "," & objuser.description
>> >    objRecordSet.MoveNext
>> > Loop
>>
>> If today is 20071002000000 (yyyymmddhhnnss) then you can use:
>>
>> "SELECT ADsPath FROM 'LDAP://ou=new starters,DC=domain,DC=com' " _
>>     & " WHERE objectCategory='person' " _
>>         & "AND objectClass='user' " _
>>         & "whenCreated>='20071001000000.0Z'"
>>
>> I use objectCategory=person and objectClass=user to omit contact objects
>> and
>> computers. The ".0Z" means UTC, so you may need to adjust for your time
>> zone. For an offset (differential) of +5 hours, it would be:
>>
>> "whenCreated>='20071001000000.0+0500'"
>>
>> The formula is:
>>
>> GMT=Local+differential
>>
>> Where GMT is the old acronym for UTC (Coordinated Universal Time in
>> French)
>> and Local is the local time (in your time zone). Ordinarily these few
>> hours
>> don't matter, but if you are searching for objects created since
>> midnight,
>> it can matter.
>>
>> --
>> Richard Mueller
>> Microsoft MVP Scripting and ADSI
>> Hilltop Lab - http://www.rlmueller.net
>> --
>>
>>
>>
Author
3 Oct 2007 2:59 PM
Simon G
fantastic, works a treat.

thanks again

Show quote
"Richard Mueller [MVP]" wrote:

> Takes a bit of work to construct the date in the correct format, but below
> should work:
> ============
> dtmToday = Date()
> dtmYesterday = DateAdd("d", dtmToday, -1)
>
> strYear = CStr(Year(dtmYesterday))
> strMonth = Right("0" & CStr(Month(dtmYesterday)), 2)
> strDay = Right("0" & CStr(Day(dtmYesterday)), 2)
> strYesterday = strYear & strMonth & strDay & "000000.Z"
>
> objCommand.CommandText = _
>     "SELECT ADsPath FROM 'LDAP://ou=new starters,DC=domain,DC=com' " _
>         & " WHERE objectCategory='person' " _
>             & "AND objectClass='user' " _
>             & "AND whenCreated>='" & strYesterday & "'"
> ================
> In my previous post, I believe I missed the second "AND" in the "WHERE"
> clause above.
>
> --
> Richard Mueller
> Microsoft MVP Scripting and ADSI
> Hilltop Lab - http://www.rlmueller.net
> --
>
> "Simon G" <Sim***@discussions.microsoft.com> wrote in message
> news:7B41E6CB-A9DD-4315-9AD0-94D0BABC87B7@microsoft.com...
> > thanks as always Richard.
> >
> > Is there anyway that the date can be dynamic, so the script uses some kind
> > of getdate function, as opposed to me having to amend the date each time.
> >
> > Failing that, is it possible to have a simple input box appear and the
> > date
> > is manually entered and then use the varaible in the whencreated >= part
> > rather than the text?
> >
> > "Richard Mueller [MVP]" wrote:
> >
> >>
> >> "Simon G" <Sim***@discussions.microsoft.com> wrote in message
> >> news:18349334-27A4-4F68-86CF-3393C81E8568@microsoft.com...
> >> > Hello all.
> >> >
> >> > I have an ou in which all new users are created. I currently have a
> >> > script
> >> > which will list all the members of the ou and some of their attributes.
> >> >
> >> > What i want to do is to be able to list this, but only for users who
> >> > have
> >> > been created today.
> >> >
> >> > Here is the script i am currently using - how can i include the "where
> >> > user
> >> > was created today" statement?
> >> >
> >> > on error resume next
> >> >
> >> > Const ADS_SCOPE_SUBTREE = 2
> >> >
> >> > Set objConnection = CreateObject("ADODB.Connection")
> >> > Set objCommand =   CreateObject("ADODB.Command")
> >> > objConnection.Provider = "ADsDSOObject"
> >> > objConnection.Open "Active Directory Provider"
> >> > Set objCommand.ActiveConnection = objConnection
> >> > Set objFS = CreateObject("Scripting.FileSystemObject")
> >> > Set objNewFile = objFS.CreateTextFile("newstarters.csv")
> >> >
> >> > objCommand.Properties("Page Size") = 1000
> >> > objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
> >> >
> >> > objCommand.CommandText = _
> >> >    "SELECT ADsPath FROM 'LDAP://ou=new starters,,DC=domain,DC=com'
> >> > WHERE "
> >> > _
> >> >        & "objectCategory='user'"
> >> > Set objRecordSet = objCommand.Execute
> >> >
> >> > objRecordSet.MoveFirst
> >> > objnewfile.writeline "samaccountname" & "," & "givenname" & "," & "sn"
> >> > &
> >> > ","
> >> > & "description"
> >> > Do Until objRecordSet.EOF
> >> >    strPath = objRecordSet.Fields("ADsPath").Value
> >> >    Set objuser = GetObject(strPath)
> >> >
> >> > objNewFile.WriteLine objuser.samaccountname & "," & objuser.givenname &
> >> > ","
> >> > & objuser.sn & "," & objuser.description
> >> >    objRecordSet.MoveNext
> >> > Loop
> >>
> >> If today is 20071002000000 (yyyymmddhhnnss) then you can use:
> >>
> >> "SELECT ADsPath FROM 'LDAP://ou=new starters,DC=domain,DC=com' " _
> >>     & " WHERE objectCategory='person' " _
> >>         & "AND objectClass='user' " _
> >>         & "whenCreated>='20071001000000.0Z'"
> >>
> >> I use objectCategory=person and objectClass=user to omit contact objects
> >> and
> >> computers. The ".0Z" means UTC, so you may need to adjust for your time
> >> zone. For an offset (differential) of +5 hours, it would be:
> >>
> >> "whenCreated>='20071001000000.0+0500'"
> >>
> >> The formula is:
> >>
> >> GMT=Local+differential
> >>
> >> Where GMT is the old acronym for UTC (Coordinated Universal Time in
> >> French)
> >> and Local is the local time (in your time zone). Ordinarily these few
> >> hours
> >> don't matter, but if you are searching for objects created since
> >> midnight,
> >> it can matter.
> >>
> >> --
> >> Richard Mueller
> >> Microsoft MVP Scripting and ADSI
> >> Hilltop Lab - http://www.rlmueller.net
> >> --
> >>
> >>
> >>
>
>
>

AddThis Social Bookmark Button