none
Lista de grupos/usuarios RRS feed

  • Pergunta

  • Boa tarde Pessoal,

     

    Encontrei o script abaixo aqui no fórum mesmo eu entro com a OU e o DC (Exemplo: ou=usuarios,ou=saopaulo,dc=contoso,dc=msft) e ele me informa os usuários e os grupos a que ele pertence, ele esta me atendendo perfeitamente, porem eu estou com uma nova necessidade, estou querendo, entrando com os mesmos dados, ele me informe o grupo e quais usuários pertencem aquele grupo.

     

    Option Explicit

     

    Dim objDSE, strDefaultDN, strDN, objContainer, objChild,Userobj,List,GroupObj,FileSystem,OutPutFile

     

    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")

    Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Grupos.txt", True)

    Set objDSE = GetObject("LDAP://rootDSE")

    strDefaultDN = "CN=Users," & objDSE.Get("defaultNamingContext")

     

    strDN =     InputBox("Coloque o Caminho da OU" & _

        vbCrLf & "(Exemplo: ou=usuarios,ou=saopaulo,dc=contoso,dc=msft)", , "ou=usuarios,ou=saopaulo,dc=contoso,dc=msft")

     

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

     

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

     

    objContainer.Filter = Array("user")

     

    For Each objChild In objContainer

        set UserObj = GetObject("LDAP://" & objChild.Name & "," & strDN)

        if err.number<>0 then

             if ChkEngine = "cscript.exe" then

              wscript.echo "Erro conectando ao " & strDN & " ou usuário não encontrado."

              wscript.quit

           else

              wscript.quit

           end if

        end if

     

        List= "Grupos do usuário: " & UserObj.cn & " (" & objChild.Name & ") in " & UCASE(strDN) & VBCRLF & VBCRLF

     

        For Each GroupObj In UserObj.Groups

           List = List & GroupObj.Name  & VBCRLF

        Next

        wscript.echo List

     

            OutPutFile.WriteLine List

        OutPutFile.WriteLine "===================================================="

    Next

     

    OutPutFile.Close

    wscript.quit

     

    Function ChkEngine()

     

    ON ERROR RESUME NEXT

     

    strEngine=Wscript.FullName

     

    if Err.Number <>0 then

    wscript.echo "Error!"

    wscript.echo "Erro (" & Err.Number & ") Descrição: " & Err.Description

    wscript.quit

    end if

     

    PosX=InStrRev(strEngine,"\",-1,vbTextCompare)

    ChkEngine=Mid(strEngine,PosX+1)

     

    End Function

     

    Grato pela atenção

     

    Rodrigo Diniz

    quarta-feira, 29 de abril de 2009 18:38

Respostas

  • Olá,

    Não precisa mudar muito não...

    Veja abaixo, se é isso:

    Option Explicit

     

    Dim objDSE, strDefaultDN, strDN, objContainer, objChild,Userobj,List,GroupObj,FileSystem,OutPutFile

     

    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")

    Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Grupos.txt", True)

    Set objDSE = GetObject("LDAP://rootDSE")

    strDefaultDN = "CN=Users," & objDSE.Get("defaultNamingContext")

     

    strDN =     InputBox("Coloque o Caminho da OU" & _
    vbCrLf & "(Exemplo: ou=usuarios,ou=saopaulo,dc=contoso,dc=msft)", , "ou=usuarios,ou=saopaulo,dc=contoso,dc=msft")
     

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

     

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

     

    objContainer.Filter = Array("group")

     

    For Each objChild In objContainer

        set UserObj = GetObject("LDAP://" & objChild.Name & "," & strDN)

        if err.number<>0 then

             if ChkEngine = "cscript.exe" then

              wscript.echo "Erro conectando ao " & strDN & " ou usuário não encontrado."

              wscript.quit

           else

              wscript.quit

           end if

        end if

     

        List= "Grupos do usuário: " & UserObj.cn & " (" & objChild.Name & ") in " & UCASE(strDN) & VBCRLF & VBCRLF

     

        For Each GroupObj In UserObj.Members

           List = List & GroupObj.Name  & VBCRLF

        Next

        wscript.echo List

     

            OutPutFile.WriteLine List

        OutPutFile.WriteLine "===================================================="

    Next

     

    OutPutFile.Close

    wscript.quit

     

    Function ChkEngine()

     

    ON ERROR RESUME NEXT

     

    strEngine=Wscript.FullName

     

    if Err.Number <>0 then

    wscript.echo "Error!"

    wscript.echo "Erro (" & Err.Number & ") Descrição: " & Err.Description

    wscript.quit

    end if

     

    PosX=InStrRev(strEngine,"\",-1,vbTextCompare)

    ChkEngine=Mid(strEngine,PosX+1)

     

    End Function



    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    • Marcado como Resposta diniz quarta-feira, 29 de abril de 2009 20:11
    quarta-feira, 29 de abril de 2009 19:41

Todas as Respostas

  • Olá,

    Não precisa mudar muito não...

    Veja abaixo, se é isso:

    Option Explicit

     

    Dim objDSE, strDefaultDN, strDN, objContainer, objChild,Userobj,List,GroupObj,FileSystem,OutPutFile

     

    Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")

    Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Grupos.txt", True)

    Set objDSE = GetObject("LDAP://rootDSE")

    strDefaultDN = "CN=Users," & objDSE.Get("defaultNamingContext")

     

    strDN =     InputBox("Coloque o Caminho da OU" & _
    vbCrLf & "(Exemplo: ou=usuarios,ou=saopaulo,dc=contoso,dc=msft)", , "ou=usuarios,ou=saopaulo,dc=contoso,dc=msft")
     

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

     

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

     

    objContainer.Filter = Array("group")

     

    For Each objChild In objContainer

        set UserObj = GetObject("LDAP://" & objChild.Name & "," & strDN)

        if err.number<>0 then

             if ChkEngine = "cscript.exe" then

              wscript.echo "Erro conectando ao " & strDN & " ou usuário não encontrado."

              wscript.quit

           else

              wscript.quit

           end if

        end if

     

        List= "Grupos do usuário: " & UserObj.cn & " (" & objChild.Name & ") in " & UCASE(strDN) & VBCRLF & VBCRLF

     

        For Each GroupObj In UserObj.Members

           List = List & GroupObj.Name  & VBCRLF

        Next

        wscript.echo List

     

            OutPutFile.WriteLine List

        OutPutFile.WriteLine "===================================================="

    Next

     

    OutPutFile.Close

    wscript.quit

     

    Function ChkEngine()

     

    ON ERROR RESUME NEXT

     

    strEngine=Wscript.FullName

     

    if Err.Number <>0 then

    wscript.echo "Error!"

    wscript.echo "Erro (" & Err.Number & ") Descrição: " & Err.Description

    wscript.quit

    end if

     

    PosX=InStrRev(strEngine,"\",-1,vbTextCompare)

    ChkEngine=Mid(strEngine,PosX+1)

     

    End Function



    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    • Marcado como Resposta diniz quarta-feira, 29 de abril de 2009 20:11
    quarta-feira, 29 de abril de 2009 19:41
  • Boa tarde Jesiel,

    Perfeito era isso que eu estava uerendo. muito obrigado.

    Rodrigo Diniz
    quarta-feira, 29 de abril de 2009 20:12