VBScript – Enumerates all SamAccounts in you current Domain


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
'==========================================================================
' NAME: List_AD_SamAccounts.vbs
'
' COMMENT: Enumerates all SamAccounts with department and descriptions
'
'==========================================================================

Option Explicit


Dim adoCommand, adoConnection, strBase, strFilter, strAttributes


Dim objRootDSE, strDNSDomain, strQuery, adoRecordset, strName


Dim strDept, arrDescript, strDescript, strItem


' Setup ADO objects.


Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection


' Search entire Active Directory domain.


Set objRootDSE = GetObject("LDAP://RootDSE")


strDNSDomain = objRootDSE.Get("defaultNamingContext")
strBase = "<LDAP://" & strDNSDomain & ">"


' Filter on user objects.
strFilter = "(&(objectCategory=person)(objectClass=user))"


' Comma delimited list of attribute values to retrieve.
strAttributes = "sAMAccountName,description,department"


' Construct the LDAP syntax query.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
adoCommand.CommandText = strQuery
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False


' Run the query.
Set adoRecordset = adoCommand.Execute


' Enumerate the resulting recordset.
Do Until adoRecordset.EOF


    ' Retrieve values and display.
    strName = adoRecordset.Fields("sAMAccountName").Value


    strDept = adoRecordset.Fields("department").Value


    arrDescript = adoRecordset.Fields("description").Value


    If IsNull(arrDescript) Then


        strDescript = ""


    Else


        For Each strItem in arrDescript


            strDescript = strItem


        Next


    End If


    ' Output comma delimited values for this user.


    Wscript.Echo strName & "," & strDescript & "," & strDept


    ' Move to the next record in the recordset.
    adoRecordset.MoveNext
Loop


' Clean up.


adoRecordset.Close


adoConnection.Close



You can leave a response, or trackback from your own site.


Further Reading
    None Found




Leave a Reply

Anti-Spam Quiz:

Twitter Delicious Facebook Digg Stumbleupon Favorites More
338 queries in 2.698 seconds.