none
Script para encontrar o nome de um usuário no AD RRS feed

  • Pergunta

  • Amigos do technet,

     

    É o seguinte: Eu tenho um arquivo txt com vários logins (1 em cada linha) de usuário do AD daqui da minha rede. Eu quero um script (em vbs ou .bat mesmo) que consulte no AD cada usuário deste arquivo txt que eu tenho e que me retorne o Display Name deste usuário para mim em um outro arquivo txt (ou planilha do excel, ou um doc, enfim). É possível? Desde já agradeço.

     

    Abraço para todos !!!

    terça-feira, 9 de setembro de 2008 18:48

Respostas

  • Edu,

    O script .VBS abaixo lê o arquivo usuarios.txt localizado na mesma pasta onde vc salvou o .VBS e imprime na tela o DisplayName.

    Execute o script via prompt de comando (cscript nomedovbs.vbs)

    on error resume next
    
    Const ForReading = 1
    
    strFileName = "usuarios.txt"
    
    
    Set objFSO = CreateObject("scripting.filesystemobject")
    Set objInputFile = objFSO.OpenTextFile(strFileName,ForReading)
    
    
    Do While Not objInputFile.AtEndOfStream
    	
    	strUserDN = Trim(objInputFile.ReadLine)
    
    	Set objUser = GetObject("LDAP://" & GetDN(strUserDN))
    
    	wscript.echo ObjUser.DisplayName
    Loop
    
    
    Function GetDN(sUser)
    
      Dim oConnection, oCommand, oRoot, sDNSDomain, sQuery, sFilter, oResults,sDisplayName
       GetDN = ""
       sDisplayName = sUser
       On Error Resume Next
       ' Use ADO to search the domain for all users.
       Set oConnection = CreateObject("ADODB.Connection")
       Set oCommand = CreateObject("ADODB.Command")
       oConnection.Provider = "ADsDSOOBject"
       oConnection.Open "Active Directory Provider"
       Set oCommand.ActiveConnection = oConnection
       ' Determine the DNS domain from the RootDSE object.
       Set oRoot = GetObject("LDAP://RootDSE")
       sDNSDomain = oRoot.Get("DefaultNamingContext")
       sFilter = "(&(ObjectClass=user)(ObjectCategory=person)(samAccountName=" & sUser & "))"
       sQuery = "<LDAP://" & sDNSDomain & ">;" & sFilter & ";distinguishedname,displayName;subtree"
       oCommand.CommandText = sQuery
       oCommand.Properties("Page Size") = 100
       oCommand.Properties("Timeout") = 30
       oCommand.Properties("Cache Results") = False
       Set oResults = oCommand.Execute
       Do Until oResults.EOF
         if oResults.Fields("displayName") <> "" then
           sDisplayName = oResults.Fields("displayName")
           GETDN = oResults.Fields("distinguishedname")
         End if
         oResults.MoveNext
       Loop
       On Error Goto 0
     
    End Function


    Fábio de Paula Junior

    quarta-feira, 14 de março de 2012 19:17
    Moderador

Todas as Respostas

  • Alguém tem alguma resposta?

     

    quarta-feira, 10 de setembro de 2008 20:00
  • Edu,

    O script .VBS abaixo lê o arquivo usuarios.txt localizado na mesma pasta onde vc salvou o .VBS e imprime na tela o DisplayName.

    Execute o script via prompt de comando (cscript nomedovbs.vbs)

    on error resume next
    
    Const ForReading = 1
    
    strFileName = "usuarios.txt"
    
    
    Set objFSO = CreateObject("scripting.filesystemobject")
    Set objInputFile = objFSO.OpenTextFile(strFileName,ForReading)
    
    
    Do While Not objInputFile.AtEndOfStream
    	
    	strUserDN = Trim(objInputFile.ReadLine)
    
    	Set objUser = GetObject("LDAP://" & GetDN(strUserDN))
    
    	wscript.echo ObjUser.DisplayName
    Loop
    
    
    Function GetDN(sUser)
    
      Dim oConnection, oCommand, oRoot, sDNSDomain, sQuery, sFilter, oResults,sDisplayName
       GetDN = ""
       sDisplayName = sUser
       On Error Resume Next
       ' Use ADO to search the domain for all users.
       Set oConnection = CreateObject("ADODB.Connection")
       Set oCommand = CreateObject("ADODB.Command")
       oConnection.Provider = "ADsDSOOBject"
       oConnection.Open "Active Directory Provider"
       Set oCommand.ActiveConnection = oConnection
       ' Determine the DNS domain from the RootDSE object.
       Set oRoot = GetObject("LDAP://RootDSE")
       sDNSDomain = oRoot.Get("DefaultNamingContext")
       sFilter = "(&(ObjectClass=user)(ObjectCategory=person)(samAccountName=" & sUser & "))"
       sQuery = "<LDAP://" & sDNSDomain & ">;" & sFilter & ";distinguishedname,displayName;subtree"
       oCommand.CommandText = sQuery
       oCommand.Properties("Page Size") = 100
       oCommand.Properties("Timeout") = 30
       oCommand.Properties("Cache Results") = False
       Set oResults = oCommand.Execute
       Do Until oResults.EOF
         if oResults.Fields("displayName") <> "" then
           sDisplayName = oResults.Fields("displayName")
           GETDN = oResults.Fields("distinguishedname")
         End if
         oResults.MoveNext
       Loop
       On Error Goto 0
     
    End Function


    Fábio de Paula Junior

    quarta-feira, 14 de março de 2012 19:17
    Moderador