none
Script para listar usuário inativo e, quais grupos eles pertecem RRS feed

  • Pergunta

  • Bom dia,

    Preciso usar um script que busque:

    • nome usuario
    • account
    • Inativo/Ativo
    • Membro de qual Grupo

    Ou seja, em um único script, gostaria de filtrar nome do usuário, nome do id, se ele esta ativo ou inativo e, quais grupos ele pertence. Encontrei muitos scripts, mas apenas faz o usuário inativo, ou mostra os grupos, queria unificar em um unico script. 

    Fiz desta maneira, mas buscou apenas o usuário ativo/inativo.

    dsquery user OU=TI,DC=dominio,DC=LOCAL |dsget user -samid -disabled


    Douglas Urbano

    sexta-feira, 28 de junho de 2013 14:50

Respostas

  • Douglas,

    Veja este script em PowerShell

    Import-Module activedirectory
    
    $usuarios = get-adUser -filter * -SearchBase "DC=lab,dc=com,dc=br" -Properties * 
    
    foreach($u in $usuarios){
        "==============================================================="
        "Nome      : "+ $u.DisplayName
        "Login     : "+ $u.SamAccountName
        "Habilitado: "+ $u.Enabled
        "Grupos    :"
        foreach ($g in $u.memberof){
            #Aqui coloquei duas opcoes de nome de grupo
            #Basta voce apagar a linha que vc nao quer
            "`t"+$g  #Aqui mostra o nome distinto
            "`t"+(Get-ADGroup $g).name  #Aqui mostra o nome do grupo
        }
    
    
    }


    Fábio de Paula Junior



    domingo, 30 de junho de 2013 18:44
    Moderador
  • Douglas,

    Basta vc colocar ">> nome do arquivo.txt" na frente de tudo que vc quer que saia no arquivo de saída, assim:

    Import-Module activedirectory
    
    $usuarios = get-adUser -filter * -SearchBase "DC=lab,dc=com,dc=br" -Properties * 
    
    foreach($u in $usuarios){
        "==============================================================="
        "Nome      : "+ $u.DisplayName >> c:\temp.txt
        "Login     : "+ $u.SamAccountName >> c:\temp.txt
        "Habilitado: "+ $u.Enabled >> c:\temp.txt
        "Grupos    :" >> c:\temp.txt
        foreach ($g in $u.memberof){
            #Aqui coloquei duas opcoes de nome de grupo
            #Basta voce apagar a linha que vc nao quer
            "`RH"+$g  #Aqui mostra o nome distinto
            "`RH"+(Get-ADGroup $g).name  >> c:\temp.txt
        }
    
    
    }


    Fábio de Paula Junior


    quarta-feira, 10 de julho de 2013 13:12
    Moderador
  • Douglas,

    Só complementando...

    Uma outra opção é ao invés de colocar os ">>" dentro do script, você pode utilizar fora do script.

    1. Não altere o script (deixe como na primeira versão que passei, que imprime na tela)

    2. Na hora de chamar o script pelo prompt faça assim.

    PS C:\Users\fabiojr> .\seuscript.ps1 > c:\teste.txt

    Assim eu acho melhor porque você tem o script para duas utilizações: Imprimir na tela e no arquivo.


    Fábio de Paula Junior

    • Marcado como Resposta Douglas Urbano quarta-feira, 10 de julho de 2013 17:32
    quarta-feira, 10 de julho de 2013 16:49
    Moderador

Todas as Respostas

  • Douglas,

    Veja este script em PowerShell

    Import-Module activedirectory
    
    $usuarios = get-adUser -filter * -SearchBase "DC=lab,dc=com,dc=br" -Properties * 
    
    foreach($u in $usuarios){
        "==============================================================="
        "Nome      : "+ $u.DisplayName
        "Login     : "+ $u.SamAccountName
        "Habilitado: "+ $u.Enabled
        "Grupos    :"
        foreach ($g in $u.memberof){
            #Aqui coloquei duas opcoes de nome de grupo
            #Basta voce apagar a linha que vc nao quer
            "`t"+$g  #Aqui mostra o nome distinto
            "`t"+(Get-ADGroup $g).name  #Aqui mostra o nome do grupo
        }
    
    
    }


    Fábio de Paula Junior



    domingo, 30 de junho de 2013 18:44
    Moderador
  • Boa noite, Fabio!

    Mais uma vez, o agradeço, perfeito o script, funcionou da maneira que gostaria.

    Abs,


    Douglas Urbano

    segunda-feira, 1 de julho de 2013 21:34
  • Boa noite, Fabio!

    Por favor, sei que já foi fechado este thread, mas, poderia me informar por favor, como faço para exportar as informações geradas pelo script que me envio como .csv ou txt?

    Obrigado


    Douglas Urbano

    quarta-feira, 10 de julho de 2013 04:16
  • Douglas,

    Pode dar um exemplo de duas linhas deste .csv?


    Fábio de Paula Junior

    quarta-feira, 10 de julho de 2013 11:58
    Moderador
  • Bom dia, Fabio!

    Na verdade, eu estou usando o script que você me postou que funciona perfeitamente.

    Import-Module activedirectory $usuarios = get-adUser -filter * -SearchBase "DC=lab,dc=com,dc=br" -Properties * foreach($u in $usuarios){ "===============================================================" "Nome : "+ $u.DisplayName "Login : "+ $u.SamAccountName "Habilitado: "+ $u.Enabled "Grupos :" foreach ($g in $u.memberof){ #Aqui coloquei duas opcoes de nome de grupo #Basta voce apagar a linha que vc nao quer "`RH"+$g #Aqui mostra o nome distinto "`RH"+(Get-ADGroup $g).name #Aqui mostra o nome do grupo } }

    Mas, gostaria que todos os resultados deste grupo, eu pudesse exportar para o C: da máquina, por exemplo, c:\temp.txt

    Gostaria de Filtrar assim:

    Nome: Douglas Urbano

    Login: dsurbano

    Habilitado: Sim

    Grupo: Administrator, RH_All

    Isso te ajuda?

    Caso tenha algum script em .vbs ou mesmo dsquery que consiga todas estas informações, pode ser também.

    Obrigado,



    Douglas Urbano


    quarta-feira, 10 de julho de 2013 12:51
  • Douglas,

    Basta vc colocar ">> nome do arquivo.txt" na frente de tudo que vc quer que saia no arquivo de saída, assim:

    Import-Module activedirectory
    
    $usuarios = get-adUser -filter * -SearchBase "DC=lab,dc=com,dc=br" -Properties * 
    
    foreach($u in $usuarios){
        "==============================================================="
        "Nome      : "+ $u.DisplayName >> c:\temp.txt
        "Login     : "+ $u.SamAccountName >> c:\temp.txt
        "Habilitado: "+ $u.Enabled >> c:\temp.txt
        "Grupos    :" >> c:\temp.txt
        foreach ($g in $u.memberof){
            #Aqui coloquei duas opcoes de nome de grupo
            #Basta voce apagar a linha que vc nao quer
            "`RH"+$g  #Aqui mostra o nome distinto
            "`RH"+(Get-ADGroup $g).name  >> c:\temp.txt
        }
    
    
    }


    Fábio de Paula Junior


    quarta-feira, 10 de julho de 2013 13:12
    Moderador
  • Fábio!

    Mais uma vez, muito obrigado, funcionou.

    Abraços,


    Douglas Urbano

    quarta-feira, 10 de julho de 2013 13:16
  • Douglas,

    Só complementando...

    Uma outra opção é ao invés de colocar os ">>" dentro do script, você pode utilizar fora do script.

    1. Não altere o script (deixe como na primeira versão que passei, que imprime na tela)

    2. Na hora de chamar o script pelo prompt faça assim.

    PS C:\Users\fabiojr> .\seuscript.ps1 > c:\teste.txt

    Assim eu acho melhor porque você tem o script para duas utilizações: Imprimir na tela e no arquivo.


    Fábio de Paula Junior

    • Marcado como Resposta Douglas Urbano quarta-feira, 10 de julho de 2013 17:32
    quarta-feira, 10 de julho de 2013 16:49
    Moderador
  • Boa tarde, Fabio!

    Perfeito também, muito obrigado pelas informações, me ajudou muito.

    Abs,


    Douglas Urbano

    quarta-feira, 10 de julho de 2013 17:32