Pergunta : Script para remover os grupos do “membro” de grupos em uma lista de clientes de usuário

APROVAÇÃO, eu estou indo tentar descrever tão claramente meu pedido como possível.  Eu não sou um perito scripting por nenhuma meios e não preciso muita ajuda de fazer esta.  Eu verific tudo sobre o Internet para encontrar algo que trabalhará que eu posso construir sobre, mas podia somente encontrar um exemplo pequeno que eu cole abaixo. Está aqui minha situação: o

We tem um domínio 2003 muito grande do ANÚNCIO de Windows com muitas OU de que eu tenho direitas administrativas sobre um único local (chamada ele OU=A). Nós temos muitos usuários mover-se dentro para, e fora, de nossa OU. Quando nós movemos um usuário “fora” de nossa OU nós precisamos de remover todos os grupos que existem no “membro” da aba em ADUC associado com nosso local (OU=A). Quando este for um processo simples quando o movimento é para 1 a 15 usuários começ muito mais trabalho intensivo quando nós temos que mover 50 a 100 usuários.  Nós recebemos frequentemente estes pedidos com os usuários alistados em um spreadsheet de Excel. Eu gostaria de script este processo aproveitando-se o spreadsheet.  o

As sempre, lá é um par prendedores. 1) O cliente de usuário pode ter um grupo de segurança de uma outra OU do local, que deva ser ignorada porque meu cliente do admin não poderá o remover. 2) Nós precisamos de remover os grupos globais, do domínio do Local, do universal, e da distribuição que estão em nossa OU do local (OU=A). Qualquer grupo que existir em minha OU do local (chamada ele OU=A) precisará de ser pequena notícia que de código de removed.

The VB eu encontrei estou abaixo dele não posso ser o sentido você iria, assim que eu estou aberto ao resumo Next

Const do erro do suggestions

* VBScript

On ADS_PROPERTY_DELETE = 4
Const objUser do
Set de E_ADS_PROPERTY_NOT_FOUND = de &h8000500D
= _
de GetObject (“LDAP: //cn=cn=username, ou=A, ou=SITES, dc=OURDC, dc=OURDC, dc=COM”)
arrMemberOf =
If do
de objUser.GetEx (“memberOf”) Err.Number = E_ADS_PROPERTY_NOT_FOUND este cliente de/> Then
For
WScript.Quit
End If
cada grupo no objGroup ajustado do arrMemberOf
= no GetObject (“LDAP: /” & o
objGroup.PutEx ADS_PROPERTY_DELETE do grupo), _
“membro”, o problema do
objGroup.SetInfo
Next

The da disposição (“cn=username, ou=A, ou=SITES, dc=OURDC, dc=OURDC, dc=COM”) com este código é que é para um único usuário e a chamada de uma lima de Excel com uma lista de usuários. Também, eu não penso que tratará os grupos que estão em uma OU diferente do local, mas eu não sou positivo sobre this.

In o prazo que eu gostaria de fazer a isto o núcleo de um certificado maior que confirmasse o nome de usuário antes que remova os grupos a seguir mova as caixas postais da troca 2007 dos usuários para um grupo do armazenamento da plataforma ou da terra arrendada, que já existisse (eu posso preencher aqueles espaços em branco se eu posso começ os comandos e a sintaxe apropriados). esperança do

I eu expliquei o este claramente bastante.  Agradecimentos adiantado para seus ajuda e conselho.  
class= do

Resposta : Script para remover os grupos do “membro” de grupos em uma lista de clientes de usuário

eu mudei o certificado ao registro à lima em vez da saída ao console.
a lima está sob 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:
Opção explícita

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

pai não ofuscante, intRow, usuários, usuário
objDelGroup não ofuscante, objRootLDAP, objGroup, objUser, objOU, objmemberOf
objParent não ofuscante, objWorkbook, objExcel, strValue, strMail, strDescription, strInfo, intgroupType, distinguishedName, strSAMAccountName
groupParentLdap não ofuscante, strName, strUser, strDNSDomain, strLDAP, strList, raiz

Ajustar o objFSO = o CreateObject (“Scripting.FileSystemObject”)
Ajustar objInputFile = objFSO.CreateTextFile (“c:\temp\shdrv.log”, 2)

const ROOT_OU = “ou=”

'ler a lista de usuários de primam a lima
Ajustar o objExcel = o CreateObject (“Excel.Application”)
Ajustar o objWorkbook = o objExcel.Workbooks.Open (“C:\temp\users _list.xls”)

intRow = 1
usuário = objExcel.Cells (intRow, 1). Valor

Fazer até o usuário = o ""
        se usuários = "" então
                usuários = usuário
        mais 
                usuários = usuários & “,” & usuário
        terminar se
        
    intRow = intRow + 1
        usuário = objExcel.Cells (intRow, 1). Valor
Laço


Ajustar o objRootLDAP = o GetObject (“LDAP: //RootDSE”)
strDNSDomain = objRootLDAP.Get (“DefaultNamingContext”)
raiz = “LDAP: /” & ROOT_OU & “,” & strDNSDomain
raiz de objInputFile.WriteLine

RecurseOUs GetObject (raiz)

RecurseOUs secundário (objOU)
        objOUObject não ofuscante, strConnString
        Para cada objOUObject no objOU
                Se UCase (deixado (objOUObject.Name, 3)) = “OU=” então
                        strConnString = objOUObject.DistinguishedName
                        objInputFile.WriteLine que strConnString
                        Ajustar ObjUser = GetObject (“LDAP: /” & strConnString)

                        CheckUser que strConnString
                        RecurseOUs ObjUser
                        Terminar se
        Em seguida
Submarino da extremidade

CheckUser secundário (strConnString)
        No resumo do erro em seguida

        para cada usuário na separação (usuários, “, ")
                objInputFile.WriteLine
                usuário de objInputFile.WriteLine “: ” & usuário
                
                strUser = " cn= " & usuário & “,”
                strLDAP = " LDAP: /“& strUser & strConnString
                strLDAP de objInputFile.WriteLine
                Ajustar o objUser = o GetObject (o strLDAP)
                Se Err.Number = 0 então
      
                        objParent ajustado = GetObject (GetObject (objUser.Parent). Pai)
                        objParent.GetInfo
                        
                        o pai = substitui (objParent.Name, “CN=”, o "")
                        local pai de objInputFile.WriteLine do “: ” & pai
                        
                        objmemberOf  = objUser.GetEx (“memberOf”)
                        Para cada objGroup no objmemberOf
                                objInputFile.WriteLine
                                grupo LDAP de objInputFile.WriteLine “: ” & objGroup 
                                
                                Ajustar o objGroup = o GetObject (“LDAP: /” & objGroup)
                                objGroup.GetInfo

                                strName = objGroup.Get (“nome”)
                                strSAMAccountName = objGroup.Get (“sAMAccountName”)
                                intgroupType = objGroup.Get (“groupType”)
                                distinguishedName = objGroup.Get (“distinguishedName”)
                                 
                                distinguishedName de objInputFile.WriteLine “: ” & distinguishedName
                                nome de objInputFile.WriteLine “: ” & strName
                                sAMAccountName de objInputFile.WriteLine “: ” & strSAMAccountName
                                 
                                Espaço grupo de WScript.StdOut.Write do “: ”
                                Se intGroupType E ADS_GROUP_TYPE_LOCAL_GROUP então
                                  objInputFile.WriteLine do “local domínio”
                                intGroupType de ElseIf E ADS_GROUP_TYPE_GLOBAL_GROUP então
                                  objInputFile.WriteLine “global”
                                intGroupType de ElseIf E ADS_GROUP_TYPE_UNIVERSAL_GROUP então
                                  objInputFile.WriteLine “universal”
                                Mais
                                  objInputFile.WriteLine “desconhecido”
                                Terminar se
                                 
                                Tipo grupo de WScript.StdOut.Write do “: ”
                                Se intGroupType E ADS_GROUP_TYPE_SECURITY_ENABLED então
                                  objInputFile.WriteLine de “grupo segurança”
                                Mais
                                  objInputFile.WriteLine da “grupo distribuição”
                                Terminar se
                                 
                                objInputFile.WriteLine
                                objInputFile.WriteLine “***** que valida o ******** do grupo de usuário [COMEÇO]”
                                objInputFile.WriteLine “procura” & pai & “em” & distinguishedName
                                
                                se InStr (UCase (distinguishedName), UCase (pai)) > 0 então
                                        objInputFile.WriteLine “grupo” & strName & “está sob o mesmo local que o usuário” & o usuário
                                        groupParentLdap = “LDAP: /” & ROOT_OU & “,” & strDNSDomain
                                        objInputFile.WriteLine “preparam-se para remover o grupo” & o strName &  “de” & o groupParentLdap
                                        Ajustar o objDelGroup = o GetObject (o groupParentLdap)
                                        objDelGroup.Delete “grupo”, “cn=” & strName                     
                                        objInputFile.WriteLine “grupo” & strName & “foi removido”
                                terminar se 
                                
                                objInputFile.WriteLine “***** que valida o ******** do grupo de usuário [EXTREMIDADE]”
                                objInputFile.WriteLine
                        Em seguida
                Terminar SE
        Em seguida
Submarino da extremidade

objInputFile.Close
WScript.Quit
Outras soluções  
 
programming4us programming4us