Groupen met members van AD exporteren

Pagina: 1
Acties:
  • 139 views sinds 30-01-2008

  • cOOlrUnnINgs
  • Registratie: Februari 2002
  • Laatst online: 05-05 16:16
Ik ben een poging aan het doen om een lijst uit AD te halen waarin alle groepen staan en waar er per groep staat aangegeven wie er lid van is.

Nu heb ik 2 scripts op Internet gevonden, één die alle groepen uit AD haalt, en één die van een vast ingegegeven groep aangeeft wie er lid van is.

Nu heb ik dus een poging gedaan om deze 2 scripts in elkaar te breien, waarbij er van het 2e script een variabele gevuld wordt middels een loop met de gegevens uit het eerste script.

Op zich lukt dat volgens mij wel, echter, zodra de variabele (met de distinguishedName van de groep) gevuld wordt, wordt bij de eerstvolgende regel dat er gegevens opgehaald moeten een gedeelte van de DN afgehakt en wordt er dus niets opgehaald.

Output:
code:
1
2
3
4
** General Properties Page**
** (Single-Valued Attributes) **
CN=HelpServicesGroup,CN=Users,DC=FZ,DC=local
H:\Users Member Of\test\groupmembers.vbs(46, 1) Runtimefout Microsoft VBScript: Object vereist: 'CN=HelpServicesGroup'


De code die ik hiervoor gebruik, is als volgt:

code:
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
Option Explicit

Dim objRootDSE, strDNSDomain, objCommand, objConnection
Dim strBase, strFilter, strAttributes, strQuery, objRecordSet
Dim strDN, strAltRecipient

' Determine DNS domain name.
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")

' Use ADO to search Active Directory.
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection

' Specify the base of the search.
strBase = "<LDAP://" & strDNSDomain & ">"

' Filter on all group objects in the domain.
strFilter = "(&(objectCategory=group)(objectClass=group))"

' Specify the attributes to retrieve (comma delimited list).
strAttributes = "distinguishedName"

' Specify the query. "subtree" means to search all child containers/OU's.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"

objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 100
objCommand.Properties("Timeout") = 30
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute

Do Until objRecordSet.EOF
strDN = objRecordSet.Fields("distinguishedName")

' *************************************************************

' On Error Resume Next

WScript.Echo VbCrLf & "** General Properties Page**"
WScript.Echo "** (Single-Valued Attributes) **"
WScript.Echo strDN
strname = strDN.Get("name")
WScript.Echo "name: " & strname
strsamAccountName = strDN.Get("samAccountName")
WScript.Echo "samAccountName: " & strsamAccountName
strdescription = strDN.Get("description")
WScript.Echo "description: " & strdescription
strmail = strDN.Get("mail")
WScript.Echo "mail: " & strmail

WScript.Echo VbCrLf & "** General Properties Page**"
WScript.Echo "** (The groupType attribute) **"
Set objHash = CreateObject("Scripting.Dictionary")
objHash.Add "ADS_GROUP_TYPE_GLOBAL_GROUP", &h2
objHash.Add "ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP", &h4
objHash.Add "ADS_GROUP_TYPE_UNIVERSAL_GROUP", &h8
objHash.Add "ADS_GROUP_TYPE_SECURITY_ENABLED", &h80000000
intgroupType = strDN.Get("groupType")
For Each Key in objHash.Keys
  If objHash(Key) And intgroupType Then
    WScript.Echo Key & " is enabled."
  Else
    WScript.Echo Key & " is disabled."
  End If
Next
If intgroupType AND objHash.Item("ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP") Then
  WScript.Echo "Group Scope: Domain Local Group"
ElseIf intGroupType AND objHash.Item("ADS_GROUP_TYPE_GLOBAL_GROUP") Then
  WScript.Echo "Group Scope: Global Group"
ElseIf intGroupType AND objHash.Item("ADS_GROUP_TYPE_UNIVERSAL_GROUP") Then
  WScript.Echo "Group Scope: Universal Group"
End If
If intgroupType AND objHash.Item("ADS_GROUP_TYPE_SECURITY_ENABLED") Then
  WScript.Echo "Group Type: Security"
Else
  WScript.Echo "Group Type: Distribution"
End If
WScript.Echo VbCrLf & "** Managed By Properties Page**"
WScript.Echo "** (Single-Valued Attributes) **"
strmanagedBy = strDN.Get("managedBy")
WScript.Echo "managedBy: " & strmanagedBy

If strmanagedBy <> "" Then
  Set strDN1 = GetObject("LDAP://" & strManagedBy)
  WScript.Echo "physicalDeliveryOfficeName: " & _
    strDN1.physicalDeliveryOfficeName
  WScript.Echo "streetAddress: " & _
    strDN1.streetAddress
  WScript.Echo "l: " & _
    strDN1.l
  WScript.Echo "c: " & _
    strDN1.c
  WScript.Echo "telephoneNumber: " & _
    strDN1.telephoneNumber
  WScript.Echo "facsimileTelephoneNumber: " & _
    strDN1.facsimileTelephoneNumber
End If

WScript.Echo VbCrLf & "** Member Properties Page**"
WScript.Echo "** (MultiValued Attributes) **"
strmember = strDN.GetEx("member")
WScript.Echo "member:"
For Each Item in strmember
 WScript.Echo vbTab & Item
Next

WScript.Echo VbCrLf & "** Member Of Properties Page**"
WScript.Echo "** (MultiValued Attributes) **"
strmemberOf = strDN.GetEx("memberOf")
WScript.Echo "memberOf:"
For Each Item in strmemberOf
 WScript.Echo vbTab & Item
Next

WScript.Echo VbCrLf & "** Managed By Properties Page**"
WScript.Echo "** (Single-Valued Attributes) **"
strmanagedBy = strDN.Get("managedBy")
WScript.Echo "managedBy: " & strmanagedBy

If strmanagedBy <> "" Then
  Set strDN1 = GetObject("LDAP://" & strManagedBy)
  WScript.Echo "physicalDeliveryOfficeName: " & _
    strDN1.physicalDeliveryOfficeName
  WScript.Echo "streetAddress: " & _
    strDN1.streetAddress
  WScript.Echo "l: " & _
    strDN1.l
  WScript.Echo "c: " & _
    strDN1.c
  WScript.Echo "telephoneNumber: " & _
    strDN1.telephoneNumber
  WScript.Echo "facsimileTelephoneNumber: " & _
    strDN1.facsimileTelephoneNumber
End If


' *************************************************************
'  & "#GroupFullName: " & strAltRecipient

objRecordSet.MoveNext
Loop

' Clean up.
objConnection.Close
Set objRootDSE = Nothing
Set objCommand = Nothing
Set objConnection = Nothing
Set objRecordSet = Nothing


Mis ik ergens iets, heeft iemand eerder met dit bijltje gehakt ?????

[ Voor 11% gewijzigd door cOOlrUnnINgs op 08-07-2005 15:10 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:58
Hoi,

sorry, maar het is niet de bedoeling dat wij die code voor jou gaan debuggen.
Verder snap ik een (belangrijk) deel van je post niet; nl. deze zin:
Op zich lukt dat volgens mij wel, echter, zodra de variabele (met de distinguishedName van de groep) gevuld wordt, wordt bij de eerstvolgende regel dat er gegevens opgehaald moeten een gedeelte van de DN afgehakt en wordt er dus niets opgehaald.
Wat je hier mee probeert te zeggen, kan ik totaal niet opmaken.

Misschien is het handig als je zelf eerst eens de code debugged.
In P&W kunnen we ook geen ondersteuning bieden voor scripts die je gedownloaded hebt.

https://fgheysels.github.io/


Dit topic is gesloten.