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 :
|
Option explicite
Const ADS_PROPERTY_DELETE = 4
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
faible parent, intRow, utilisateurs, utilisateur
Faible objDelGroup, objRootLDAP, objGroup, objUser, objOU, objmemberOf
Faible objParent, objWorkbook, objExcel, strValue, strMail, strDescription, strInfo, intgroupType, distinguishedName, strSAMAccountName
faible groupParentLdap, strName, strUser, strDNSDomain, strLDAP, strList, racine
Placer l'objFSO = le CreateObject (« Scripting.FileSystemObject »)
Placer objInputFile = objFSO.CreateTextFile (« c:\temp\shdrv.log », 2)
const ROOT_OU = « ou= »
'lire la liste utilisateurs de excellent le dossier
Placer l'objExcel = le CreateObject (« Excel.Application »)
Placer l'objWorkbook = l'objExcel.Workbooks.Open (" C:\temp\users _list.xls »)
intRow = 1
utilisateur = objExcel.Cells (intRow, 1).Value
Faire jusqu'à l'utilisateur = au ""
si utilisateurs = puis ""
utilisateurs = utilisateur
autrement
utilisateurs = utilisateurs et « , » et utilisateur
finir si
intRow = intRow + 1
utilisateur = objExcel.Cells (intRow, 1).Value
Boucle
Placer l'objRootLDAP = le GetObject (« LDAP : //RootDSE »)
strDNSDomain = objRootLDAP.Get (« DefaultNamingContext »)
racine = « LDAP : / » et ROOT_OU et « , » et strDNSDomain
racine d'objInputFile.WriteLine
RecurseOUs GetObject (racine)
RecurseOUs secondaire (objOU)
Faible objOUObject, strConnString
Pour chaque objOUObject dans l'objOU
Si UCase (laissé (objOUObject.Name, 3)) = « OU= » puis
strConnString = objOUObject.DistinguishedName
objInputFile.WriteLine strConnString
Placer ObjUser = GetObject (« LDAP : / » et strConnString)
CheckUser strConnString
RecurseOUs ObjUser
Finir si
Après
Sous-marin d'extrémité
CheckUser secondaire (strConnString)
Sur le résumé d'erreur après
pour chaque utilisateur dans la fente (utilisateurs, « , ")
objInputFile.WriteLine
utilisateur d'objInputFile.WriteLine « : » et utilisateur
strUser = " cn= " et utilisateur et « , »
strLDAP = " LDAP : /« et strUser et strConnString
strLDAP d'objInputFile.WriteLine
Placer l'objUser = le GetObject (le strLDAP)
Si Err.Number = 0 puis
objParent réglé = GetObject (GetObject (objUser.Parent). Parent)
objParent.GetInfo
le parent = remplacent (objParent.Name, « CN= », le "")
emplacement de parent d'objInputFile.WriteLine « : » et parent
objmemberOf = objUser.GetEx (« memberOf »)
Pour chaque objGroup dans l'objmemberOf
objInputFile.WriteLine
groupe LDAP d'objInputFile.WriteLine « : » et objGroup
Placer l'objGroup = le GetObject (« LDAP : / » et objGroup)
objGroup.GetInfo
strName = objGroup.Get (« nom »)
strSAMAccountName = objGroup.Get (« sAMAccountName »)
intgroupType = objGroup.Get (« groupType »)
distinguishedName = objGroup.Get (« distinguishedName »)
distinguishedName d'objInputFile.WriteLine « : » et distinguishedName
nom d'objInputFile.WriteLine « : » et strName
sAMAccountName d'objInputFile.WriteLine « : » et strSAMAccountName
Portée de groupe de WScript.StdOut.Write « : »
S'intGroupType ET ADS_GROUP_TYPE_LOCAL_GROUP alors
objInputFile.WriteLine « gens du pays de domaine »
intGroupType d'ElseIf ET ADS_GROUP_TYPE_GLOBAL_GROUP alors
objInputFile.WriteLine « global »
intGroupType d'ElseIf ET ADS_GROUP_TYPE_UNIVERSAL_GROUP alors
objInputFile.WriteLine « universel »
Autrement
objInputFile.WriteLine « inconnu »
Finir si
Type de groupe de WScript.StdOut.Write « : »
S'intGroupType ET ADS_GROUP_TYPE_SECURITY_ENABLED alors
objInputFile.WriteLine « groupe de sécurité »
Autrement
objInputFile.WriteLine « groupe de distribution »
Finir si
objInputFile.WriteLine
objInputFile.WriteLine « ***** validant le ******** du Groupe d'utilisateurs [DÉBUT] »
objInputFile.WriteLine « recherche » et parent et « dans » et distinguishedName
s'InStr (UCase (distinguishedName), UCase (parent)) > 0 puis
objInputFile.WriteLine « groupe » et strName et « est sous le même emplacement que l'utilisateur » et l'utilisateur
groupParentLdap = « LDAP : / » et ROOT_OU et « , » et strDNSDomain
objInputFile.WriteLine « préparent pour enlever le groupe » et le strName et « de » et le groupParentLdap
Placer l'objDelGroup = le GetObject (le groupParentLdap)
objDelGroup.Delete « groupe », « cn= » et strName
objInputFile.WriteLine « groupe » et strName et « a été enlevé »
finir si
objInputFile.WriteLine « ***** validant le ******** du Groupe d'utilisateurs [EXTRÉMITÉ] »
objInputFile.WriteLine
Après
Finir SI
Après
Sous-marin d'extrémité
objInputFile.Close
WScript.Quit
|