Fråga : Skriva för att ta bort grupper från ”medlemmen av” grupper i en lista av användarekonton

REKO I-förmiddag som går till försök att beskriva min förfrågan så klart som möjlighet.    Jag har kontrollerat alla över internet för att finna något som ska arbete, som jag kan bygga på, men var endast kompetent att finna ett litet exempel, som jag ska nedanför deg. Är här mitt läge:

We har ett mycket stort Windows ANNONSområde 2003 med många OU som jag har av administrativa rätter över en singelplats (appell det OU=A). Vi har inflyttning för många användare till och ut ur, vår OU. När oss flyttning en användare ”ut ur” vår OU som vi behöver att ta bort alla grupper, som finns i ”medlemmen av” fliken i ADUC som är tillhörande med vår plats (OU=A). Fördriva detta är ett enkelt bearbetar när flyttningen är för 1 till 15 användare som den får mycket mer arbete intensivt, när vi måste användare för flyttning 50 till 100.  Vi mottar ofta dessa förfrågan med användarena som listas i ett Excelräkneark. Jag skulle något liknande för att skriva detta processaa, genom att ta fördel av räknearket.  

As alltid, det finns en koppla ihop av fångar. 1) Användarekontot kan ha en säkerhetsgrupp från en annan platsOU, som bör ignoreras, därför att mitt admin-konto ska för att inte vara kompetent att ta den bort. 2) Vi behöver att ta bort globala, områdeslokal-, universal- och fördelningsgrupper som är i vår platsOU (OU=A). Någon grupp, som finns i mitt ska behov för platsOU (appell det OU=A) att vara, removed.

The VB kodifierar snippet funnen I är nedanför det kan inte vara riktningen som du skulle går, så mig förmiddagen som är öppen till felmeritförteckningen Next

Const för suggestions

* VBScript

On ADS_PROPERTY_DELETE = 4
Const objUser för E_ADS_PROPERTY_NOT_FOUND- = för &h8000500D

Set = GetObject _
(”LDAP: //cn=cn=username ou=A, ou=SITES, dc=OURDC, dc=OURDC, dc=COM”)
arrMemberOf =
If för
för objUser.GetEx (”memberOf”) Err.Number = E_ADS_PROPERTY_NOT_FOUND detta konto för/> Then
For för
WScript.Quit
End If
varje grupp i fastställd objGroup för arrMemberOf
= GetObject (”LDAP: /” &
objGroup.PutEx ADS_PROPERTY_DELETE, _
”medlem” för grupp), problemet för
objGroup.SetInfo
Next

The för samling (”cn=username, ou=A, ou=SITES, dc=OURDC, dc=OURDC, dc=COM”) med detta kodifierar är att det är för en singelanvändare och inte kalla en Excel spara med en lista av användare. Också jag gör inte funderare som det ska handtaget grupperna, som är i en olik platsOU, men realiteten för I-förmiddagen inte om this.

In det långsiktigt jag skulle något liknande för att göra detta kärna ur av ett större att skriva som bekräftar den kända användaren, för den tar bort flyttningar för grupper därefter brevlådorna för användareutbyte 2007 till en byggnadsställning- eller innehavlagringsgrupp, som finns redan (jag kan fylla in de förbigår, om jag kan få det riktigt befaller och syntax). hopp för

I jag förklarade detta klart nog.  Tack i förskott för din hjälp och rådgivning.  
" klar "

Svar : Skriva för att ta bort grupper från ”medlemmen av” grupper i en lista av användarekonton

jag ändrade skriva för att logga för att spara, i stället för tillverkat för att trösta.
spara är under 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:
Explicit alternativ

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

dunkel förälder, intRow, användare, användare
Dunkel objDelGroup, objRootLDAP, objGroup, objUser, objOU, objmemberOf
Dunkelt objParent, objWorkbook, objExcel, strValue, strMail, strDescription, strInfo, intgroupType, distinguishedName, strSAMAccountName
dunkel groupParentLdap, strName, strUser, strDNSDomain, strLDAP, strList, rotar

Fastställd objFSO = CreateObject (”Scripting.FileSystemObject”)
Fastställdt objInputFile = objFSO.CreateTextFile (”c:\temp\shdrv.log”, 2)

const ROOT_OU = ”ou=”,

'läs användare listar från överträffar sparar
Fastställd objExcel = CreateObject (”Excel.Application”)
Fastställd objWorkbook = objExcel.Workbooks.Open (”C:\temp\users _list.xls”)

intRow = 1
användare = objExcel.Cells (intRow, 1). Värdera

Gör till användare = "",
        om användare = "" därefter
                användare = användare
        annars 
                användare = användare & ”,” & användare
        avsluta om
        
    intRow = intRow + 1
        användare = objExcel.Cells (intRow, 1). Värdera
Kretsa


Fastställd objRootLDAP = GetObject (”LDAP: //RootDSE”)
strDNSDomain = objRootLDAP.Get (”DefaultNamingContext”)
rota = ”LDAP: /” & ROOT_OU & ”,” & strDNSDomain
objInputFile.WriteLine rotar

RecurseOUs GetObject (rota),

Sub RecurseOUs (objOU)
        Dunkel objOUObject som strConnString
        För varje objOUObject i objOU
                Om lämnade, UCase ((objOUObject.Name, 3)) = ”OU=” därefter
                        strConnString = objOUObject.DistinguishedName
                        objInputFile.WriteLine som strConnString
                        Fastställda ObjUser = GetObject (”LDAP: /” & strConnString)

                        CheckUser som strConnString
                        RecurseOUs ObjUser
                        Avsluta om
        Därefter
Avsluta suben

Sub CheckUser (strConnString)
        På felmeritförteckning därefter

        för varje användare i splittring (användare, ”,”)
                objInputFile.WriteLine
                objInputFile.WriteLine-”användare: ” & användare
                
                strUser = " cn= " & användare & ”,”,
                strLDAP = " LDAP: /”& strUser & strConnString
                objInputFile.WriteLine-strLDAP
                Fastställd objUser = GetObject (strLDAP)
                Om Err.Number = 0 därefter
      
                        Fastställdt objParent = GetObject (GetObject (objUser.Parent). Förälder)
                        objParent.GetInfo
                        
                        föräldern = byter ut (objParent.Name, ”CN=”, "")
                        objInputFile.WriteLine-”förälderplats: ” & förälder
                        
                        objmemberOf  = objUser.GetEx (”memberOf”)
                        För varje objGroup i objmemberOf
                                objInputFile.WriteLine
                                objInputFile.WriteLine-”grupp LDAP: ” & objGroup 
                                
                                Fastställd objGroup = GetObject (”LDAP: /” & objGroup)
                                objGroup.GetInfo

                                strName = objGroup.Get (”namnge”),
                                strSAMAccountName = objGroup.Get (”sAMAccountName”)
                                intgroupType = objGroup.Get (”groupType”)
                                distinguishedName = objGroup.Get (”distinguishedName”)
                                 
                                objInputFile.WriteLine-”distinguishedName: ” & distinguishedName
                                objInputFile.WriteLine ”namnger: ” & strName
                                objInputFile.WriteLine-”sAMAccountName: ” & strSAMAccountName
                                 
                                WScript.StdOut.Write-”gruppräckvidd: ”,
                                Om intGroupType OCH ADS_GROUP_TYPE_LOCAL_GROUP därefter
                                  objInputFile.WriteLine ”områdeslokal”,
                                ElseIf intGroupType OCH ADS_GROUP_TYPE_GLOBAL_GROUP därefter
                                  ”global” objInputFile.WriteLine,
                                ElseIf intGroupType OCH ADS_GROUP_TYPE_UNIVERSAL_GROUP därefter
                                  objInputFile.WriteLine ”universal”,
                                Annars
                                  objInputFile.WriteLine ”okända”,
                                Avsluta om
                                 
                                WScript.StdOut.Write-”grupptyp: ”,
                                Om intGroupType OCH ADS_GROUP_TYPE_SECURITY_ENABLED därefter
                                  objInputFile.WriteLine ”säkerhetsgrupp”,
                                Annars
                                  objInputFile.WriteLine ”fördelningsgrupp”,
                                Avsluta om
                                 
                                objInputFile.WriteLine
                                objInputFile.WriteLine ”***** som validerar användares ******** för grupp [START]”,
                                objInputFile.WriteLine ”söka efter” & förälder & ”i” & distinguishedName
                                
                                om InStr (UCase (distinguishedName), UCase (föräldern)) > 0 därefter
                                        objInputFile.WriteLine ”grupp” & strName & ”är under den samma platsen som användare” & användare
                                        groupParentLdap = ”LDAP: /” & ROOT_OU & ”,” & strDNSDomain
                                        objInputFile.WriteLine ”förbereder sig att ta bort gruppen” & strName &  ”från” & groupParentLdap
                                        Fastställd objDelGroup = GetObject (groupParentLdap)
                                        objDelGroup.Delete ”grupp”, ”cn=” & strName                     
                                        objInputFile.WriteLine ”grupp” & strName & ”togs bort”,
                                avsluta om 
                                
                                objInputFile.WriteLine ”***** som validerar användares ******** för grupp [AVSLUTA]”,
                                objInputFile.WriteLine
                        Därefter
                Avsluta OM
        Därefter
Avsluta suben

objInputFile.Close
WScript.Quit
Andra lösningar  
 
programming4us programming4us