none
Script para excluir usuários do AD RRS feed

  • Pergunta

  • E ae galera boa, gostaria de saber se é possível ter um script que exclua usuários do AD usando uma planilha em Excel que contenha apenas duas colunas "Username" "Full Name". Agradeço antecipadamente o apoio. 
    quinta-feira, 21 de junho de 2012 18:12

Respostas

  • Caju,

    Tá na sua mão, lembra deste http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/d9b615ce-85db-4ccb-93ae-d5680355d90a?prof=required ?

    Só precisa algumas alterações, ao invés de atualizar vai excluir. Assim:

    Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
     
    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
     'Set OutPutFile = FileSystem.CreateTextFile("Resultado.txt", True)
     
    Set objExcel = CreateObject("Excel.Application")
    Set objWorkbook = objExcel.Workbooks.Open ("C:\user.xls")
    intRow = 2
      
     
    dim DomainString, UserString, WSHNetwork, WSHShell
    dim UserObj, GroupObj
     
    ON ERROR RESUME NEXT
     
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    Set WSHNetwork = WScript.CreateObject("WScript.Network")
     
     
    DomainString = WSHNetwork.UserDomain
     
    Do Until objExcel.Cells(intRow,1).Value = ""
    	UserString = objExcel.Cells(intRow, 1).Value  'coluna 1 do arquivo do excel'
    	Departamento = objExcel.Cells(intRow,2).Value 'coluna 2 do arquivo do excel'
    	strEmail = objExcel.Cells(intRow,3).Value     'coluna 3 do arquivo do excel'
    
    	'Set UserObj = GetObject("WinNT://" & DomainString & "/" & UserString) 
    	wscript.echo "Localizando: " & UserString
    	strLDAP = BuscaOU(UserString)
    
    	if Len(strLDAP) = 0 Then
    		'OutPutFile.WriteLine UserObj.FullName & " - " & "Não encontrado a OU" & VBCRLF
    		wscript.echo vbtab & "Usuário não encontrado"
    		
    	else
    	
    
    	
    	
    		wscript.echo vbtab & strLDAP
    		wscript.echo vbtab & "Usuário encontrado, deletando..."
    		
    		strOU= mid(strLDAP,instr(strLDAP,",")+1)
    		strCN=left(strLDAP,instr(strLDAP,",")-1)
    		
    		
    		Set objOU = GetObject("LDAP://" & strOU)
    
    		objOU.Delete "user", strCN
    		
    	
    	End if
    	
    	intRow = intRow + 1
    Loop
     
    objExcel.Quit
     
    
     
    Function BuscaOU(byval UserName)
     
    	Dim namingContext, ldapFilter, ou
    	Dim cn, cmd, rs
    	Dim objRootDSE
    
    	Set objRootDSE = getobject("LDAP://RootDSE")
    	namingContext = objRootDSE.Get("defaultNamingContext")
    	set objRootDSE = nothing
    
    	ldapFilter = "<LDAP://" & namingContext & _
    		">;(&(objectCategory=User)(sAMAccountName=" & userName & "))" & _
    		";distinguishedName;subtree"
    
    	set cn =  createObject("ADODB.Connection")
    	set cmd = createObject("ADODB.Command")
    
    	cn.open "Provider=ADsDSOOBject;"
    	cmd.activeconnection = cn
    	cmd.commandtext = ldapFilter
    
    	set rs = cmd.execute
    
    	if rs.eof <> true and rs.bof <> true then
    		ou = rs(0)
    		'ou = mid(ou,instr(ou,",")+1,Len(ou) - instr(ou,","))
    		BuscaOU = ou
    	End if
    
    	rs.close
    	cn.close
    
    End Function
    
    
    

    Testa aí porque modifiquei e não testei.


    Fábio de Paula Junior

    • Marcado como Resposta CaJu_Jr quinta-feira, 21 de junho de 2012 21:58
    quinta-feira, 21 de junho de 2012 19:21
    Moderador

Todas as Respostas

  • Caju,

    Tá na sua mão, lembra deste http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/d9b615ce-85db-4ccb-93ae-d5680355d90a?prof=required ?

    Só precisa algumas alterações, ao invés de atualizar vai excluir. Assim:

    Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
     
    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
     'Set OutPutFile = FileSystem.CreateTextFile("Resultado.txt", True)
     
    Set objExcel = CreateObject("Excel.Application")
    Set objWorkbook = objExcel.Workbooks.Open ("C:\user.xls")
    intRow = 2
      
     
    dim DomainString, UserString, WSHNetwork, WSHShell
    dim UserObj, GroupObj
     
    ON ERROR RESUME NEXT
     
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    Set WSHNetwork = WScript.CreateObject("WScript.Network")
     
     
    DomainString = WSHNetwork.UserDomain
     
    Do Until objExcel.Cells(intRow,1).Value = ""
    	UserString = objExcel.Cells(intRow, 1).Value  'coluna 1 do arquivo do excel'
    	Departamento = objExcel.Cells(intRow,2).Value 'coluna 2 do arquivo do excel'
    	strEmail = objExcel.Cells(intRow,3).Value     'coluna 3 do arquivo do excel'
    
    	'Set UserObj = GetObject("WinNT://" & DomainString & "/" & UserString) 
    	wscript.echo "Localizando: " & UserString
    	strLDAP = BuscaOU(UserString)
    
    	if Len(strLDAP) = 0 Then
    		'OutPutFile.WriteLine UserObj.FullName & " - " & "Não encontrado a OU" & VBCRLF
    		wscript.echo vbtab & "Usuário não encontrado"
    		
    	else
    	
    
    	
    	
    		wscript.echo vbtab & strLDAP
    		wscript.echo vbtab & "Usuário encontrado, deletando..."
    		
    		strOU= mid(strLDAP,instr(strLDAP,",")+1)
    		strCN=left(strLDAP,instr(strLDAP,",")-1)
    		
    		
    		Set objOU = GetObject("LDAP://" & strOU)
    
    		objOU.Delete "user", strCN
    		
    	
    	End if
    	
    	intRow = intRow + 1
    Loop
     
    objExcel.Quit
     
    
     
    Function BuscaOU(byval UserName)
     
    	Dim namingContext, ldapFilter, ou
    	Dim cn, cmd, rs
    	Dim objRootDSE
    
    	Set objRootDSE = getobject("LDAP://RootDSE")
    	namingContext = objRootDSE.Get("defaultNamingContext")
    	set objRootDSE = nothing
    
    	ldapFilter = "<LDAP://" & namingContext & _
    		">;(&(objectCategory=User)(sAMAccountName=" & userName & "))" & _
    		";distinguishedName;subtree"
    
    	set cn =  createObject("ADODB.Connection")
    	set cmd = createObject("ADODB.Command")
    
    	cn.open "Provider=ADsDSOOBject;"
    	cmd.activeconnection = cn
    	cmd.commandtext = ldapFilter
    
    	set rs = cmd.execute
    
    	if rs.eof <> true and rs.bof <> true then
    		ou = rs(0)
    		'ou = mid(ou,instr(ou,",")+1,Len(ou) - instr(ou,","))
    		BuscaOU = ou
    	End if
    
    	rs.close
    	cn.close
    
    End Function
    
    
    

    Testa aí porque modifiquei e não testei.


    Fábio de Paula Junior

    • Marcado como Resposta CaJu_Jr quinta-feira, 21 de junho de 2012 21:58
    quinta-feira, 21 de junho de 2012 19:21
    Moderador
  • Entendi. 

    Eu só tenho que colocar o "username" na planilha, correto ? 

    quinta-feira, 21 de junho de 2012 21:12
  • Entendi. 

    Eu só tenho que colocar o "username" na planilha, correto ? 

    Fabio, rodei o script e deu o seguinte erro:

    quinta-feira, 21 de junho de 2012 21:32
  • Entendi. 

    Eu só tenho que colocar o "username" na planilha, correto ? 

    Fabio, rodei o script e deu o seguinte erro:

    Fabio o erro acima eu consegui entender. É falta de aspas ! 

    Muito obrigado mais uma vez meu amigo.

    Deu certo o Script.
    Obrigadão novamente. 
    quinta-feira, 21 de junho de 2012 21:58