none
Extraindo informações de Usuarios do ad RRS feed

  • Pergunta

  • Pessoal,

    estou precisando de um script que extraia todas as informações dos usuarios da minha OU como por exemplo:

    Nome, email, ultimo logon, se a senha esta setada para expirar, se a conta vai expirar, todas as informações relacionadas a logon.

    mas a minha OU de users fica abaixo desta hierarquia: Global - Brazil - Campinas - User Accounts

    se alguem puder me ajudar tenho este script como base.

    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    objCommand.CommandText = _
        "SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=xxx,dc=xxx,dc=xxx' " & _
            "WHERE objectCategory='User'" 

    Set objRecordSet = objCommand.Execute

    objRecordSet.MoveFirst

    Do Until objRecordSet.EOF
        nome = objRecordSet.Fields("name").Value
        descricao = objRecordSet.Fields("description").Value
        cn = objRecordSet.Fields("distinguishedname").Value
        Set objUser = GetObject("LDAP://" & cn)
        Set objLastLogon = objUser.Get("lastLogon")
        intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
        intLastLogonTime = intLastLogonTime / (60 * 10000000)
        intLastLogonTime = intLastLogonTime / 1440

        OutPutFile.WriteLine nome & ";" & cn & ";" & int(intLastLogonTime + #1/1/1601#)
        objRecordSet.MoveNext
    Loop


    anderson silva
    quarta-feira, 28 de outubro de 2009 11:31

Respostas

  • Olá,

    Verifique o exemplo abaixo:



    set FSo = CreateObject("Scripting.FileSystemObject")

    'Coloque aqui a pasta para a qual os arquivos serão copiados
    strLog = "log-ad.txt"


    Set objDSE = GetObject("LDAP://rootDSE")
    strDefaultDN = "OU=Brazil,OU=Campinas," & objDSE.Get("defaultNamingContext")

    strDN =     InputBox("Coloque o distinguished name do container" & _
        vbCrLf & "(Ex.: " & strDefaultDN & ")", , strDefaultDN)

    If strDN = "" Then WScript.Quit(1)       

    Set objContainer = GetObject("LDAP://" & strDN)

    Set ArqLog = FSO.OpenTextFile(strLog, 8, True, 0)

    objContainer.Filter = Array("user")

    ArqLog.WriteLine  VBCRLF
    ArqLog.WriteLine "==================================================="
    ArqLog.WriteLine "USUARIOS LISTADOS EM: " & now
    ArqLog.WriteLine "==================================================="
    ArqLog.WriteLine  VBCRLF



    For Each objChild In objContainer
        set objUser = GetObject("LDAP://" & objChild.Name & "," & strDN)
        strUsuario = objUser.name
        strDescricao = objUser.description
        strCN = objUser.cn

        Set objLastLogon = objUser.Get("lastLogon")

        intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
        intLastLogonTime = intLastLogonTime / (60 * 10000000)
        intLastLogonTime = intLastLogonTime / 1440

        ArqLog.WriteLine  strUsuario & ";" & strCN & ";" & int(intLastLogonTime + #1/1/1601#)


    Next




    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    • Marcado como Resposta silvanderson quarta-feira, 28 de outubro de 2009 18:05
    quarta-feira, 28 de outubro de 2009 12:56
  • Olá,

    Você colocou assim:

    OU=Global,OU=Brazil,OU=Campinas Apg,OU=User

    Acredito que a ou User está dentro de Campinas, que está dentro de brasil, correto?

    Então o correto seria:

    OU=User,OU=Campinas Apg,OU=Brazil,OU=Global,DC=SEUDOMINIO,DC=COM,DC=BR


    Até mais,

    Jesiel

    Obs.: Se útil, classifique




    • Marcado como Resposta silvanderson quarta-feira, 28 de outubro de 2009 18:05
    quarta-feira, 28 de outubro de 2009 17:12
  • Olá,

    altere a linha:

     shell.run "xcopy C:\Inventario\INV\*.inv \\CPSFMC-S003\INVENTARIO\INV /s /e /y"

    Para:

     shell.run ("xcopy C:\Inventario\INV\*.inv \\CPSFMC-S003\INVENTARIO\INV /s /e /y",1,TRUE)


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    • Marcado como Resposta silvanderson quinta-feira, 29 de outubro de 2009 16:54
    quinta-feira, 29 de outubro de 2009 15:50

Todas as Respostas

  • Olá,

    Verifique o exemplo abaixo:



    set FSo = CreateObject("Scripting.FileSystemObject")

    'Coloque aqui a pasta para a qual os arquivos serão copiados
    strLog = "log-ad.txt"


    Set objDSE = GetObject("LDAP://rootDSE")
    strDefaultDN = "OU=Brazil,OU=Campinas," & objDSE.Get("defaultNamingContext")

    strDN =     InputBox("Coloque o distinguished name do container" & _
        vbCrLf & "(Ex.: " & strDefaultDN & ")", , strDefaultDN)

    If strDN = "" Then WScript.Quit(1)       

    Set objContainer = GetObject("LDAP://" & strDN)

    Set ArqLog = FSO.OpenTextFile(strLog, 8, True, 0)

    objContainer.Filter = Array("user")

    ArqLog.WriteLine  VBCRLF
    ArqLog.WriteLine "==================================================="
    ArqLog.WriteLine "USUARIOS LISTADOS EM: " & now
    ArqLog.WriteLine "==================================================="
    ArqLog.WriteLine  VBCRLF



    For Each objChild In objContainer
        set objUser = GetObject("LDAP://" & objChild.Name & "," & strDN)
        strUsuario = objUser.name
        strDescricao = objUser.description
        strCN = objUser.cn

        Set objLastLogon = objUser.Get("lastLogon")

        intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
        intLastLogonTime = intLastLogonTime / (60 * 10000000)
        intLastLogonTime = intLastLogonTime / 1440

        ArqLog.WriteLine  strUsuario & ";" & strCN & ";" & int(intLastLogonTime + #1/1/1601#)


    Next




    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    • Marcado como Resposta silvanderson quarta-feira, 28 de outubro de 2009 18:05
    quarta-feira, 28 de outubro de 2009 12:56
  • Caro Jesiel,

    O script solicita que eu informe qual o conteiner. O que devo colocar neste campo no nome da minha OU onde esta a OU User Accouts?

    Sem mais,
    anderson silva
    quarta-feira, 28 de outubro de 2009 14:17
  • Olá,

    Correto. Coloque o caminho inteiro da OU onde estão os usuários que você deseja listar.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique

    quarta-feira, 28 de outubro de 2009 15:15
  • Jesiel,

    Coloquei este caminho OU=Global,OU=Brazil,OU=Campinas Apg,OU=User Accounts mas deu um erro na linha 15.

    Sem mais,
    anderson silva
    quarta-feira, 28 de outubro de 2009 15:47
  • Olá,

    Você colocou assim:

    OU=Global,OU=Brazil,OU=Campinas Apg,OU=User

    Acredito que a ou User está dentro de Campinas, que está dentro de brasil, correto?

    Então o correto seria:

    OU=User,OU=Campinas Apg,OU=Brazil,OU=Global,DC=SEUDOMINIO,DC=COM,DC=BR


    Até mais,

    Jesiel

    Obs.: Se útil, classifique




    • Marcado como Resposta silvanderson quarta-feira, 28 de outubro de 2009 18:05
    quarta-feira, 28 de outubro de 2009 17:12
  • Josiel,

    gerou perfeitamente agora preciso saber como faço para incluir os outro campos com:

    Data de expiração da conta, descrição, password never expire, etc

    Sem mais,
    anderson silva
    quarta-feira, 28 de outubro de 2009 18:06
  • Olá,

    Para a data de expiração da conta, dá uma olhada no link abaixo:

    http://jesielsp.spaces.live.com/blog/cns!F3106FA526E9FB33!181.entry

    Você pode ver nas propriedades do schema ou com o adsiedit (support tools)

    http://www.microsoft.com/downloads/details.aspx?FamilyID=49ae8576-9bb9-4126-9761-ba8011fabf38&displaylang=en


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quarta-feira, 28 de outubro de 2009 18:55
  • Jesiel,

    Obrigado pela ajuda neste script, agora o que eu preciso é que ele retorne uma mensagem no final da criação do arquivo falando que foi concluido con sucesso...

    sem mais,


    anderson silva
    quinta-feira, 29 de outubro de 2009 11:25
  • Olá,

    no final, coloque: wscript.echo "Concluido com Sucesso!"


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quinta-feira, 29 de outubro de 2009 11:42
  • Jesiel,

    tenho um outro script que realiza a copia de um arquivo via vpn para o meu servidor e coloquei a instrução wscript.echo "Concluido com Sucesso!" depois da instrução de copia, mas a menssagem aparece antes de terminar a copia. Que função eu posso utilizar para que ele aguarde o termino da copia.


    origem = "\\CPSFMC-S003\Inventario\inventario"
    destino = "c:\"

    Set objCommand =   CreateObject("ADODB.Command")
    set objshell = createobject("wscript.shell")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    set FSO = createobject("scripting.filesystemobject")
    set shell = createobject("wscript.shell")

    if FSO.folderexists("C:\Inventario") = False then
    objFSO.CopyFolder origem , destino , OverWriteFiles
    End if

     objshell.run "C:\inventario\AsystInventarioHardware.exe"
     objshell.run "C:\inventario\AsystInventarioSoftware.exe"

     shell.run "xcopy C:\Inventario\INV\*.inv \\CPSFMC-S003\INVENTARIO\INV /s /e /y"


     wscript.echo "Arquivo Copiado com Sucesso. Obrigado!!!"




    Sem mais,


    anderson silva

    quinta-feira, 29 de outubro de 2009 13:14
  • Olá,

    altere a linha:

     shell.run "xcopy C:\Inventario\INV\*.inv \\CPSFMC-S003\INVENTARIO\INV /s /e /y"

    Para:

     shell.run ("xcopy C:\Inventario\INV\*.inv \\CPSFMC-S003\INVENTARIO\INV /s /e /y",1,TRUE)


    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    • Marcado como Resposta silvanderson quinta-feira, 29 de outubro de 2009 16:54
    quinta-feira, 29 de outubro de 2009 15:50