Questione : Script per rimuovere i gruppi “dal membro„ dei gruppi in una lista dei clienti di utente

APPROVAZIONE, sto andando tentare di descrivere chiaro la mia richiesta come possibile.  Non sono un esperto scripting attraverso alcuni mezzi e non ho bisogno di molto aiuto di fare questo.  Ho controllato in tutto il Internet per trovare qualcosa che funzionasse che posso costruire sopra, ma potesse soltanto trovare un piccolo esempio che incollerò sotto. Qui è la mia situazione: il

We ha un dominio molto grande 2003 dell'ANNUNCIO di Windows con molti OU di cui ho diritti amministrativi sopra un singolo luogo (chiamata esso OU=A). Abbiamo molti utenti muoverci dentro verso e, dal nostro OU. Quando spostiamo un utente “„ dal nostro OU dobbiamo rimuovere tutti i gruppi che esistono “nel membro„ della linguetta in ADUC connesso con il nostro luogo (OU=A). Mentre questo è un processo semplice quando il movimento è per 1 - 15 utenti ottiene molto più lavoro intenso quando dobbiamo spostare 50 - 100 utenti.  Riceviamo spesso queste richieste con gli utenti elencati in un foglio elettronico di Excel. Vorrei script questo processo approfittando del foglio elettronico.  il

As sempre, là è una coppia di fermi. 1) il cliente di utente può avere un gruppo di sicurezza da un altro OU del luogo, che dovrebbe essere ignorato perché il mio cliente di admin non potrà rimuoverlo. 2) dobbiamo rimuovere i gruppi di dominio e globali del Local, dell'universale e di distribuzione che sono nel nostro OU del luogo (OU=A). Qualsiasi gruppo che esiste nel mio OU del luogo (chiamata esso OU=A) dovrà essere frammento che di codice di removed.

The VB ho trovato sono sotto esso non posso essere il senso andreste, in modo da sono aperto al riassunto Next

Const di errore del suggestions

* VBScript

On ADS_PROPERTY_DELETE = 4
Const objUser del
Set di &h8000500D
= _
(“LDAP di GetObject: //cn=cn=username, ou=A, ou=SITES, dc=OURDC, dc=OURDC, dc=COM„)
arrMemberOf =
If del
di objUser.GetEx (“memberOf„) Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo “non è un membro di alcuni gruppi di sicurezza. “
For del
WScript.Quit
End If
ogni gruppo nel objGroup stabilito del arrMemberOf
= in GetObject (“LDAP: /„ &
objGroup.PutEx ADS_PROPERTY_DELETE, il _
“membro„ del gruppo), il problema del
objGroup.SetInfo
Next

The di allineamento (“cn=username, ou=A, ou=SITES, dc=OURDC, dc=OURDC, dc=COM„) con questo codice è che è per un monoutente e la chiamata della lima di Excel con una lista degli utenti. Inoltre, non penso che tratti i gruppi che sono in un OU differente del luogo, ma non sono positivo circa this.

a lungo termine avrei voluto rendere questo il centro di più grande scritto che conferma il nome di utente prima che rimuova i gruppi quindi sposti le cassette postali di scambio 2007 degli utenti verso un gruppo di immagazzinaggio della tenuta o dell'organizzazione, che già esiste (posso riempire quegli spazii in bianco se posso ottenere gli ordini e la sintassi adeguati). speranza del

I ho spiegato il questo abbastanza chiaramente.  Ringraziamenti in anticipo per il vostri aiuto e consiglio.  
class= del

Risposta : Script per rimuovere i gruppi “dal membro„ dei gruppi in una lista dei clienti di utente

ho cambiato lo scritto al ceppo alla lima anziché uscita alla sezione comandi.
la lima è sotto 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:
Opzione esplicita

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

genitore fioco, intRow, utenti, utente
objDelGroup fioco, objRootLDAP, objGroup, objUser, objOU, objmemberOf
objParent fioco, objWorkbook, objExcel, strValue, strMail, strDescription, strInfo, intgroupType, distinguishedName, strSAMAccountName
groupParentLdap fioco, strName, strUser, strDNSDomain, strLDAP, strList, radice

Regolare il objFSO = CreateObject (“Scripting.FileSystemObject„)
Regolar objInputFile = objFSO.CreateTextFile (“c:\temp\shdrv.log„, 2)

const ROOT_OU = “ou=„

'leggere la lista di utenti da eccellono la lima
Regolare il objExcel = CreateObject (“Excel.Application„)
Regolare il objWorkbook = objExcel.Workbooks.Open (" C:\temp\users _list.xls„)

intRow = 1
utente = objExcel.Cells (intRow, 1).Value

Fare fino all'utente = al ""
        se utenti = "" allora
                utenti = utente
        altrimenti 
                utenti = utenti & “,„ & utente
        concluder se
        
    intRow = intRow + 1
        utente = objExcel.Cells (intRow, 1).Value
Ciclo


Regolare il objRootLDAP = GetObject (“LDAP: //RootDSE„)
strDNSDomain = objRootLDAP.Get (“DefaultNamingContext„)
radice = “LDAP: /„ & ROOT_OU & “,„ & strDNSDomain
radice di objInputFile.WriteLine

RecurseOUs GetObject (radice)

RecurseOUs secondario (objOU)
        objOUObject fioco, strConnString
        Per ogni objOUObject nel objOU
                Se UCase (lasciato (objOUObject.Name, 3)) = “OU=„ allora
                        strConnString = objOUObject.DistinguishedName
                        objInputFile.WriteLine che strConnString
                        Regolare ObjUser = GetObject (“LDAP: /„ & strConnString)

                        CheckUser che strConnString
                        RecurseOUs ObjUser
                        Concluder se
        Dopo
Sommergibile dell'estremità

CheckUser secondario (strConnString)
        Sul riassunto di errore dopo

        per ogni utente nella spaccatura (utenti, “, ")
                objInputFile.WriteLine
                utente di objInputFile.WriteLine “: „ & utente
                
                strUser = " cn= " & utente & “,„
                strLDAP = " LDAP: /“& strUser & strConnString
                strLDAP di objInputFile.WriteLine
                Regolare il objUser = GetObject (strLDAP)
                Se Err.Number = 0 allora
      
                        objParent stabilito = GetObject (GetObject (objUser.Parent). Genitore)
                        objParent.GetInfo
                        
                        il genitore = sostituisce (objParent.Name, “CN=„, "")
                        luogo del genitore di objInputFile.WriteLine “: „ & genitore
                        
                        objmemberOf  = objUser.GetEx (“memberOf„)
                        Per ogni objGroup nel objmemberOf
                                objInputFile.WriteLine
                                gruppo LDAP di objInputFile.WriteLine “: „ & objGroup 
                                
                                Regolare il objGroup = GetObject (“LDAP: /„ & objGroup)
                                objGroup.GetInfo

                                strName = objGroup.Get (“nome„)
                                strSAMAccountName = objGroup.Get (“sAMAccountName„)
                                intgroupType = objGroup.Get (“groupType„)
                                distinguishedName = objGroup.Get (“distinguishedName„)
                                 
                                distinguishedName di objInputFile.WriteLine “: „ & distinguishedName
                                nome di objInputFile.WriteLine “: „ & strName
                                sAMAccountName di objInputFile.WriteLine “: „ & strSAMAccountName
                                 
                                Portata del gruppo di WScript.StdOut.Write “: „
                                Se intGroupType E ADS_GROUP_TYPE_LOCAL_GROUP allora
                                  objInputFile.WriteLine “local di dominio„
                                intGroupType di ElseIf E ADS_GROUP_TYPE_GLOBAL_GROUP allora
                                  objInputFile.WriteLine “globale„
                                intGroupType di ElseIf E ADS_GROUP_TYPE_UNIVERSAL_GROUP allora
                                  objInputFile.WriteLine “universale„
                                Altrimenti
                                  objInputFile.WriteLine “sconosciuto„
                                Concluder se
                                 
                                Tipo del gruppo di WScript.StdOut.Write “: „
                                Se intGroupType E ADS_GROUP_TYPE_SECURITY_ENABLED allora
                                  objInputFile.WriteLine “gruppo di sicurezza„
                                Altrimenti
                                  objInputFile.WriteLine “gruppo di distribuzione„
                                Concluder se
                                 
                                objInputFile.WriteLine
                                objInputFile.WriteLine “***** che convalida il ******** del gruppo degli utenti [INIZIO]„
                                objInputFile.WriteLine “cercare„ & genitore & “in„ & distinguishedName
                                
                                se InStr (UCase (distinguishedName), UCase (genitore)) > 0 allora
                                        objInputFile.WriteLine “gruppo„ & strName & “è sotto lo stesso luogo dell'utente„ & dell'utente
                                        groupParentLdap = “LDAP: /„ & ROOT_OU & “,„ & strDNSDomain
                                        objInputFile.WriteLine “preparano rimuovere il gruppo„ & strName &  “da„ & groupParentLdap
                                        Regolare il objDelGroup = GetObject (groupParentLdap)
                                        objDelGroup.Delete “gruppo„, “cn=„ & strName                     
                                        objInputFile.WriteLine “gruppo„ & strName & “è stato rimosso„
                                concluder se 
                                
                                objInputFile.WriteLine “***** che convalida il ******** del gruppo degli utenti [ESTREMITÀ]„
                                objInputFile.WriteLine
                        Dopo
                Concluder SE
        Dopo
Sommergibile dell'estremità

objInputFile.Close
WScript.Quit
Altre soluzioni  
 
programming4us programming4us