Pytanie : Pisać scenariusz Grupa od the "Członek" grupa w lista użytkownik konto

OK, I iść mój prośba równie wyraźnie ewentualny.  I być ekspert jakaś środek i potrzebować mnóstwo pomoc to.  I sprawdzać po całym the internet i który pracować że I móc dalej, ale być tylko sprawnie mały przykład który I klajstrować mały. Tutaj być mój sytuacja:

We mieć prawdziwy wielki Windows 2003 REKLAMA domena z wiele OU z czego I mieć administracyjny dobro nad pojedynczy miejsce (wezwanie ono OU=A). My mieć wiele użytkownik wewnątrz, i z, nasz OU. Gdy my ruszać się Użytkownik "z" nasz OU my potrzebować Wszystkie the grupa który istnieć w the "Członek" zakładka w ADUC kojarzyć z nasz miejsce (OU=A). Podczas Gdy użytkownik być prosty proces gdy the ruch być dla (1) 15 użytkownik ono dostawać dużo więcej praca intensywny gdy my musieć 50 100 użytkownik.  My często otrzymywać te prośba z the użytkownik spisywać w Przodować spreadsheet. I polubić ten proces zabranie przewaga the spreadsheet.  

As zawsze, tam  być kilka chwyt. 1) The użytkownik konto móc Ochrona grupa od inny Miejsce OU, che musieć ignorować ponieważ mój admin konto być sprawnie ono. 2) My potrzebować Globalny, Domena Miejscowy, Cecha ogólna, i Dystrybucja grupa który być w nasz Miejsce OU (OU=A). Jakaś grupa który istnieć w mój Miejsce OU (wezwanie ono OU=A) potrzebować removed.

The VB kod odrzynek I znajdować być pod Ono móc the kierunek ty pójść, więc I być otwarty suggestions

* VBScript

On Błąd Życiorys Next

Const ADS_PROPERTY_DELETE = 4
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D

Set objUser = GetObject _
("LDAP: //cn=cn=username, ou=A, ou=SITES, dc=OURDC, dc=OURDC, dc=COM")
arrMemberOf = objUser.GetEx ("memberOf")

If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "Ten konto być członek jakaś ochrona grupa. "
WScript.Quit
End If

For Ldap Grupa w arrMemberOf
Ustalony objGroup = GetObject ("LDAP: /" & Grupa)
objGroup.PutEx ADS_PROPERTY_DELETE, _
"członek", Szyk ("cn=username, ou=A, ou=SITES, dc=OURDC, dc=OURDC, dc=COM")
objGroup.SetInfo
Next

The problem z ten kod być że ono być dla pojedynczy użytkownik i Przodować kartoteka z lista użytkownik. Także, I myśleć ono obchodzić się the Grupa który być w różny Miejsce OU, ale I być pozytywny o this.

In the długoterminowy I polubić grupa the sedno wielki pismo który potwierdzać the użytkownik imię zanim ono usuwać grupa wtedy ruszać się the użytkownik Wymiana 2007 skrzynka pocztowa inscenizacja lub mienie magazyn grupa, che już istnieć (I móc wewnątrz tamte puste miejsce jeżeli I móc the właściwy komenderowanie i składnia).

I nadzieja I wyjaśniać to wyraźnie dosyć.  Dzięki w postęp dla twój pomoc i rada.  

Odpowiedź : Pisać scenariusz Grupa od the "Członek" grupa w lista użytkownik konto

i zmieniać the pismo zamiast wydajność.
the kartoteka być pod c:\temp\shdrv.log
(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:
Opcja Wyraźny

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

ćmić rodzic, intRow, użytkownik, użytkownik
Ćmić objDelGroup, objRootLDAP, objGroup, objUser, objOU, objmemberOf
Ćmić objParent, objWorkbook, objExcel, strValue, strMail, strDescription, strInfo, intgroupType, distinguishedName, strSAMAccountName
ćmić groupParentLdap, strName, strUser, strDNSDomain, strLDAP, strList, korzeń

Ustawiać objFSO = CreateObject ("Scripting.FileSystemObject")
Ustawiać objInputFile = objFSO.CreateTextFile ("c:\temp\shdrv.log", 2)

const ROOT_OU = "ou="

'read użytkownik lista od przodować kartoteka
Ustalony objExcel = CreateObject ("Excel.Application")
Ustalony objWorkbook = objExcel.Workbooks.Open (" C:\temp\users _list.xls")

intRow = (1)
użytkownik = objExcel.Cells (intRow, 1).Value

Do użytkownik = ""
        jeżeli użytkownik = "" wtedy
                użytkownik = użytkownik
        inny 
                użytkownik = użytkownik & "," & użytkownik
        kończyć jeżeli
        
    intRow = intRow + (1)
        użytkownik = objExcel.Cells (intRow, 1).Value
Pętla


Ustalony objRootLDAP = GetObject ("LDAP: //RootDSE")
strDNSDomain = objRootLDAP.Get ("DefaultNamingContext")
korzeń = "LDAP: /" & ROOT_OU & "," & strDNSDomain
objInputFile.WriteLine korzeń

RecurseOUs GetObject (korzeń)

Okręt podwodny RecurseOUs (objOU)
        Ciemnawy objOUObject, strConnString
        Dla ObjOU objOUObject W objOU
                Jeżeli UCase (Opuszczać (objOUObject.Name, 3)) = "OU=" Wtedy
                        strConnString = objOUObject.DistinguishedName
                        objInputFile.WriteLine strConnString
                        Ustalony ObjUser = GetObject ("LDAP: /" & strConnString)

                        CheckUser strConnString
                        RecurseOUs ObjUser
                        Kończyć Jeżeli
        Następnie
Końcówka Okręt podwodny

Okręt podwodny CheckUser (strConnString)
        Na Błąd Życiorys Następnie

        dla użytkownik użytkownik w Rozłam (użytkownik, ", ")
                objInputFile.WriteLine
                objInputFile.WriteLine "Użytkownik: " & użytkownik
                
                strUser = " cn= " & użytkownik & ","
                strLDAP = " LDAP: /"& strUser & strConnString
                objInputFile.WriteLine strLDAP
                Ustalony objUser = GetObject (strLDAP)
                Jeżeli Err.Number = (0) Wtedy
      
                        Ustalony objParent = GetObject (GetObject (objUser.Parent). Rodzic)
                        objParent.GetInfo
                        
                        rodzic = Zamieniać (objParent.Name, "CN=", "")
                        objInputFile.WriteLine "Rodzic Miejsce: " & rodzic
                        
                        objmemberOf  = objUser.GetEx ("memberOf")
                        Dla ObjmemberOf objGroup w objmemberOf
                                objInputFile.WriteLine
                                objInputFile.WriteLine "Grupowy LDAP: " & objGroup 
                                
                                Ustalony objGroup = GetObject ("LDAP: /" & objGroup)
                                objGroup.GetInfo

                                strName = objGroup.Get ("imię")
                                strSAMAccountName = objGroup.Get ("sAMAccountName")
                                intgroupType = objGroup.Get ("groupType")
                                distinguishedName = objGroup.Get ("distinguishedName")
                                 
                                objInputFile.WriteLine "distinguishedName: " & distinguishedName
                                objInputFile.WriteLine "imię: " & strName
                                objInputFile.WriteLine "sAMAccountName: " & strSAMAccountName
                                 
                                WScript.StdOut.Write "Grupowy zakres: "
                                Jeżeli intGroupType I ADS_GROUP_TYPE_LOCAL_GROUP Wtedy
                                  objInputFile.WriteLine "Domena miejscowy"
                                ElseIf intGroupType I ADS_GROUP_TYPE_GLOBAL_GROUP Wtedy
                                  objInputFile.WriteLine "Globalny"
                                ElseIf intGroupType I ADS_GROUP_TYPE_UNIVERSAL_GROUP Wtedy
                                  objInputFile.WriteLine "Cecha ogólna"
                                Inny
                                  objInputFile.WriteLine "Nieznane"
                                Kończyć Jeżeli
                                 
                                WScript.StdOut.Write "Grupowy typ: "
                                Jeżeli intGroupType I ADS_GROUP_TYPE_SECURITY_ENABLED Wtedy
                                  objInputFile.WriteLine "Ochrona grupa"
                                Inny
                                  objInputFile.WriteLine "Dystrybucja grupa"
                                Kończyć Jeżeli
                                 
                                objInputFile.WriteLine
                                objInputFile.WriteLine "***** uprawomocnianie użytkownik grupowy [POCZĄTEK] ********"
                                objInputFile.WriteLine "Dla" & rodzic & "w" & distinguishedName
                                
                                jeżeli InStr (UCase (distinguishedName), UCase (rodzic)) > (0) wtedy
                                        objInputFile.WriteLine "Grupować" & strName & "być pod the ten sam miejsce użytkownik" & użytkownik
                                        groupParentLdap = "LDAP: /" & ROOT_OU & "," & strDNSDomain
                                        objInputFile.WriteLine "Przygotowywać grupowy" & strName &  "od" & groupParentLdap
                                        Ustalony objDelGroup = GetObject (groupParentLdap)
                                        objDelGroup.Delete "grupować", "cn=" & strName                     
                                        objInputFile.WriteLine "grupować" & strName & "usuwać"
                                kończyć jeżeli 
                                
                                objInputFile.WriteLine "***** uprawomocnianie użytkownik grupowy [KOŃCÓWKA] ********"
                                objInputFile.WriteLine
                        Następnie
                Kończyć JEŻELI
        Następnie
Końcówka Okręt podwodny

objInputFile.Close
WScript.Quit
Inne rozwiązania  
 
programming4us programming4us