|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
"Simon G" <SimonG@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 -- |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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" <SimonG@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 > -- > > > |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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" <SimonG@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" <SimonG@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 >> -- >> >> >> |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
fantastic, works a treat.
thanks again "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" <SimonG@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" <SimonG@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 > >> -- > >> > >> > >> > > > |
|
![]() |
| Outils de la discussion | |
|
|