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:
|
Вариант точный
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
тусклый родитель, intRow, потребители, потребитель
Тусклое objDelGroup, objRootLDAP, objGroup, objUser, objOU, objmemberOf
Тусклое objParent, objWorkbook, objExcel, strValue, strMail, strDescription, strInfo, intgroupType, distinguishedName, strSAMAccountName
тусклое groupParentLdap, strName, strUser, strDNSDomain, strLDAP, strList, корень
Установите objFSO = CreateObject («Scripting.FileSystemObject»)
Установите objInputFile = objFSO.CreateTextFile («c:\temp\shdrv.log», 2)
const ROOT_OU = «ou=»
'прочитайте списоков пользователей от первенствуйте архив
Установите objExcel = CreateObject («Excel.Application»)
Установите objWorkbook = objExcel.Workbooks.Open (" C:\temp\users _list.xls»)
intRow = 1
потребитель = objExcel.Cells (intRow, 1).Value
Не сделать до потребителя = ""
если потребители = "" после этого
потребители = потребитель
еще
потребители = потребители & «,» & потребитель
закончитесь если
intRow = intRow + 1
потребитель = objExcel.Cells (intRow, 1).Value
Петля
Установите objRootLDAP = GetObject («LDAP: //RootDSE»)
strDNSDomain = objRootLDAP.Get («DefaultNamingContext»)
корень = «LDAP: /» & ROOT_OU & «,» & strDNSDomain
корень objInputFile.WriteLine
RecurseOUs GetObject (корень)
Sub RecurseOUs (objOU)
Тусклое objOUObject, strConnString
Для каждого objOUObject в objOU
Если ое UCase, то ((objOUObject.Name, 3)) = «OU=» после этого
strConnString = objOUObject.DistinguishedName
objInputFile.WriteLine strConnString
Установите ObjUser = GetObject («LDAP: /» & strConnString)
CheckUser strConnString
RecurseOUs ObjUser
Закончитесь если
Затем
Подводная лодка конца
Sub CheckUser (strConnString)
На резюме ошибки затем
для каждого потребителя в разделении (потребителях, «, ")
objInputFile.WriteLine
потребитель objInputFile.WriteLine «: » & потребитель
strUser = " cn= " & потребитель & «,»
strLDAP = " LDAP: /«& strUser & strConnString
strLDAP objInputFile.WriteLine
Установите objUser = GetObject (strLDAP)
Если Err.Number = 0 после этого
Установленное objParent = GetObject (GetObject (objUser.Parent). Родитель)
objParent.GetInfo
родитель = заменяет ть (objParent.Name, «CN=», "")
место родителя objInputFile.WriteLine «: » & родитель
objmemberOf = objUser.GetEx («memberOf»)
Для каждого objGroup в objmemberOf
objInputFile.WriteLine
группа LDAP objInputFile.WriteLine «: » & objGroup
Установите objGroup = GetObject («LDAP: /» & objGroup)
objGroup.GetInfo
strName = objGroup.Get («имя»)
strSAMAccountName = objGroup.Get («sAMAccountName»)
intgroupType = objGroup.Get («groupType»)
distinguishedName = objGroup.Get («distinguishedName»)
distinguishedName objInputFile.WriteLine «: » & distinguishedName
имя objInputFile.WriteLine «: » & strName
sAMAccountName objInputFile.WriteLine «: » & strSAMAccountName
Объем группы WScript.StdOut.Write «: »
Если intGroupType И ADS_GROUP_TYPE_LOCAL_GROUP после этого
objInputFile.WriteLine «local домена»
intGroupType ElseIf И ADS_GROUP_TYPE_GLOBAL_GROUP после этого
objInputFile.WriteLine «глобальное»
intGroupType ElseIf И ADS_GROUP_TYPE_UNIVERSAL_GROUP после этого
objInputFile.WriteLine «универсалия»
Еще
objInputFile.WriteLine «неисвестне»
Закончитесь если
Тип группы WScript.StdOut.Write «: »
Если intGroupType И ADS_GROUP_TYPE_SECURITY_ENABLED после этого
objInputFile.WriteLine «группа обеспеченностью»
Еще
objInputFile.WriteLine «группа распределения»
Закончитесь если
objInputFile.WriteLine
objInputFile.WriteLine «***** утверждая ******** группы потребителя [СТАРТА]»
objInputFile.WriteLine «искать» & родитель & «в» & distinguishedName
если InStr, то (UCase (distinguishedName), UCase (родитель)) > 0 после этого
objInputFile.WriteLine «группа» & strName & «находится под таким же местом как потребитель» & потребитель
groupParentLdap = «LDAP: /» & ROOT_OU & «,» & strDNSDomain
objInputFile.WriteLine «подготовляют извлечь группу» & strName & «от» & groupParentLdap
Установите objDelGroup = GetObject (groupParentLdap)
objDelGroup.Delete «группа», «cn=» & strName
извлеклось objInputFile.WriteLine «группа» & strName & «»
закончитесь если
objInputFile.WriteLine «***** утверждая ******** группы потребителя [КОНЦА]»
objInputFile.WriteLine
Затем
Закончитесь ЕСЛИ
Затем
Подводная лодка конца
objInputFile.Close
WScript.Quit
|