Frage : Script, um Gruppen vom „Mitglied“ der Gruppen in einer Liste Benutzerrechnungsprüfungen zu entfernen

O.K., werde ich versuchen, meinen Antrag so offenbar zu beschreiben, wie möglich.  Ich bin nicht ein scripting Experte mit irgendwelchen Mitteln und benötige viel Hilfe, dies zu tun.  Ich habe alle über dem Internet überprüft, um etwas zu finden, das, dass ich an errichten kann arbeitet, aber nur war, ein kleines Beispiel zu finden, das ich unten klebe. Ist hier meine Situation:

We haben ein sehr großes Windows-ANZEIGEN-Gebiet 2003 mit vielen OU, von denen ich Verwaltungsrechte über einem einzelnen Aufstellungsort habe (Anruf es OU=A). Wir haben viele Benutzer, auf und aus, unseren OU heraus innen umzuziehen. Wenn wir einen Benutzer „aus“ unserem OU heraus befördern, müssen wir alle Gruppen entfernen, die im „Mitglied“ des Vorsprunges in ADUC existieren, das mit unserem Aufstellungsort verbunden ist (OU=A). Während dieses ein einfacher Prozess ist, wenn die Bewegung für 1 bis 15 Benutzer ist, erhält sie viel mehr Arbeit intensiv, wenn wir 50 bis 100 Benutzer befördern müssen.  Wir empfangen häufig diese Anträge mit den Benutzern, die in einem Excel-Verteilungsbogen verzeichnet werden. Ich möchte script diesen Prozess, indem ich den Verteilungsbogen nutzte.  

As immer, dort sind ein paar Fänge. 1) kann das Benutzerkonto eine Sicherheitsgruppe von einem anderen Aufstellungsort OU haben, der ignoriert werden sollte, weil mein admin-Konto nicht ist, sie zu entfernen. 2) müssen wir die globale, Gebiets-Einheimisch-, Universalitäts- und Verteilungsgruppen entfernen, die in unserem Aufstellungsort OU sind (OU=A). Irgendeine Gruppe, die in meinem Aufstellungsort OU existiert (Anruf es OU=A), muss removed.

The VB sein Code-Stückchen, das ich bin unter ihm kann nicht die Richtung sein fand, Sie gehen würden, also bin ich suggestions

* VBScript

On zur Störungs-Zusammenfassung Next

Const ADS_PROPERTY_DELETE = 4
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D

Set objUser = GetObject _
geöffnet („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.Quit
End If

For jede Gruppe arrMemberOf
in gesetztem objGroup = in GetObject („LDAP: /“ u. Gruppe)
objGroup.PutEx ADS_PROPERTY_DELETE, _
„Mitglied“, Reihe („cn=username, ou=A, ou=SITES, dc=OURDC, dc=OURDC, dc=COM“)
objGroup.SetInfo
Next

The ist Problem mit diesem Code, dass es für einen einzelnen Benutzer und das Benennen nicht einer Excel-Akte mit einer Liste der Benutzer ist. Auch ich denke nicht, dass es die Gruppen behandelt, die in einem anderen Aufstellungsort OU sind, aber ich bin nicht über this.

positiv, langfristig, das ich dieses den Kern von einem größeren Index bilden möchte, der den Benutzernamen bestätigt, bevor er entfernt, Gruppen dann die Briefkästen des Benutzer Austausches 2007 auf eine Inszenierung- oder Holdingspeichergruppe verschiebt, die bereits existiert (ich kann jene freien Räume ausfüllen, wenn ich die korrekten Befehle und die Syntax erhalten kann).

I Hoffnung erklärte ich dieses offenbar genug.  Dank im Voraus für Ihre Hilfe und Rat.  

Antwort : Script, um Gruppen vom „Mitglied“ der Gruppen in einer Liste Benutzerrechnungsprüfungen zu entfernen

ich änderte den Index zum Maschinenbordbuch zur Akte anstelle vom Ausgang zur Konsole.
die Akte ist unter 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:
6:
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:
Wahl ausdrücklich

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

schwaches Elternteil, intRow, Benutzer, Benutzer
Schwaches objDelGroup, objRootLDAP, objGroup, objUser, objOU, objmemberOf
Schwaches objParent, objWorkbook, objExcel, strValue, strMail, strDescription, strInfo, intgroupType, distinguishedName, strSAMAccountName
schwaches groupParentLdap, strName, strUser, strDNSDomain, strLDAP, strList, Wurzel

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

const ROOT_OU = „ou=“

'Benutzerliste von lesen übertreffen Akte
objExcel = CreateObject („Excel.Application“) einstellen
objWorkbook = objExcel.Workbooks.Open („C:\temp\users _list.xls“ einstellen)

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

Bis Benutzer = "" tun
        wenn Benutzer = "" dann
                Benutzer = Benutzer
        sonst 
                Benutzer = Benutzer u. „,“ u. Benutzer
        beenden wenn
        
    intRow = intRow + 1
        Benutzer = objExcel.Cells (intRow, 1).Value
Schleife


objRootLDAP = GetObject einstellen („LDAP: //RootDSE“)
strDNSDomain = objRootLDAP.Get („DefaultNamingContext“)
Wurzel = „LDAP: /“ u. ROOT_OU u. „,“ u. strDNSDomain
objInputFile.WriteLine Wurzel

RecurseOUs GetObject (Wurzel)

VorRecurseOUs (objOU)
        Schwaches objOUObject, strConnString
        Für jedes objOUObject im objOU
                Wenn UCase (gelassen (objOUObject.Name, 3)) = „OU=“ dann
                        strConnString = objOUObject.DistinguishedName
                        strConnString objInputFile.WriteLine
                        ObjUser = GetObject einstellen („LDAP: /“ u. strConnString)

                        strConnString CheckUser
                        RecurseOUs ObjUser
                        Beenden wenn
        Zunächst
Enden-Unterseeboot

VorCheckUser (strConnString)
        Auf Störungs-Zusammenfassung zunächst

        für jeden Benutzer in der Spalte (Benutzer, „, ")
                objInputFile.WriteLine
                objInputFile.WriteLine „Benutzer: “ u. Benutzer
                
                strUser = " cn= " u. Benutzer u. „,“
                strLDAP = " LDAP: /„u. strUser u. strConnString
                objInputFile.WriteLine strLDAP
                objUser = GetObject (strLDAP) einstellen
                Wenn Err.Number = 0 dann
      
                        Gesetztes objParent = GetObject (GetObject (objUser.Parent). Elternteil)
                        objParent.GetInfo
                        
                        Elternteil = ersetzen (objParent.Name, „CN=“, "")
                        objInputFile.WriteLine „Elternteil-Aufstellungsort: “ u. Elternteil
                        
                        objmemberOf  = objUser.GetEx („memberOf“)
                        Für jedes objGroup im objmemberOf
                                objInputFile.WriteLine
                                objInputFile.WriteLine „Gruppe LDAP: “ u. objGroup 
                                
                                objGroup = GetObject einstellen („LDAP: /“ u. objGroup)
                                objGroup.GetInfo

                                strName = objGroup.Get („Name“)
                                strSAMAccountName = objGroup.Get („sAMAccountName“)
                                intgroupType = objGroup.Get („groupType“)
                                distinguishedName = objGroup.Get („distinguishedName“)
                                 
                                objInputFile.WriteLine „distinguishedName: “ u. distinguishedName
                                objInputFile.WriteLine „Name: “ u. strName
                                objInputFile.WriteLine „sAMAccountName: “ u. strSAMAccountName
                                 
                                WScript.StdOut.Write „Gruppenbereich: “
                                Wenn intGroupType UND ADS_GROUP_TYPE_LOCAL_GROUP dann
                                  objInputFile.WriteLine „Gebietseinheimisches“
                                ElseIf intGroupType UND ADS_GROUP_TYPE_GLOBAL_GROUP dann
                                  objInputFile.WriteLine „global“
                                ElseIf intGroupType UND ADS_GROUP_TYPE_UNIVERSAL_GROUP dann
                                  objInputFile.WriteLine „Universalität“
                                Sonst
                                  objInputFile.WriteLine „Unbekanntes“
                                Beenden wenn
                                 
                                WScript.StdOut.Write „Gruppenart: “
                                Wenn intGroupType UND ADS_GROUP_TYPE_SECURITY_ENABLED dann
                                  objInputFile.WriteLine „Sicherheitsgruppe“
                                Sonst
                                  objInputFile.WriteLine „Verteilungsgruppe“
                                Beenden wenn
                                 
                                objInputFile.WriteLine
                                objInputFile.WriteLine „*****, das Benutzergruppe [ANFANG] validiert ********“
                                objInputFile.WriteLine „Suchen“ u. Elternteil u. „in“ u. distinguishedName
                                
                                wenn InStr (UCase (distinguishedName), UCase (Elternteil)) > 0 dann
                                        objInputFile.WriteLine „Gruppe“ u. strName u. „ist unter dem gleichen Aufstellungsort wie Benutzer“ u. Benutzer
                                        groupParentLdap = „LDAP: /“ u. ROOT_OU u. „,“ u. strDNSDomain
                                        objInputFile.WriteLine „bereiten vor sich, Gruppe“ u. strName u. „  von“ u. groupParentLdap zu entfernen
                                        objDelGroup = GetObject (groupParentLdap) einstellen
                                        objDelGroup.Delete „Gruppe“, „cn=“ u. strName                     
                                        objInputFile.WriteLine „Gruppe“ u. strName u. „wurde entfernt“
                                beenden wenn 
                                
                                objInputFile.WriteLine „*****, das Benutzergruppe [ENDE] validiert ********“
                                objInputFile.WriteLine
                        Zunächst
                Beenden WENN
        Zunächst
Enden-Unterseeboot

objInputFile.Close
WScript.Quit
Weitere Lösungen  
 
programming4us programming4us