none
Lista de usuarios e grupos RRS feed

  • Pergunta

  • Pessoal boa tarde,

    Estou elaborando um script em Powershell para obter as seguintes informações do AD de uma OU específica:

    - Filial (Cidade);
    - Nome e Sobrenome;
    - Login;
    - E-mail:
    - Departamento;
    - Cargo;
    - Gerente;
    - Status da conta (ativo ou não);
    - Grupos que o usuário tem acesso (aba "member of");

    Estou tentando executar o script abaixo, porém não consigo obter os grupos com múltiplos usuários.

    cls Get-ADUser -Filter * -SearchBase 'OU=Brasilien,OU=Others,OU=Users,OU=Leschaco,DC=hq,DC=LESCHACO,DC=org' -Properties city,givenName,SurName,SamAccountName,UserPrincipalName,department,title,manager,Enabled,memberof | Select-object city,givenName,SurName,SamAccountName,UserPrincipalName,department,title,manager,Enabled,memberof | Select @{Name="Filial";Expression={$_.city}},@{Name="Nome";Expression={$_.givenName + " " + $_.Surname}},@{Name="Citrix ID";Expression={$_.SamAccountName}},@{Name="E-mail";Expression={$_.UserPrincipalName}},@{Name="Departamento";Expression={$_.Department}},@{Name="Cargo";Expression={$_.title}},@{n="ManagerName";e={get-aduser $_.manager | select -ExpandProperty name}},@{Name="Ativo?";Expression={$_.Enabled}},@{n="MemberOf";e={get-aduser $_.memberof | select -ExpandProperty name}} | Sort-Object -Property Nome | Format-Table -AutoSize

    É possível obter todos os grupos para cada usuario e exportar os dados em um arquivo .csv e também visualizar no console previamente?

    Fiz várias pesquisas no fórum e em outros sites mas só consegui encontrar um comando para obter esta informação para um único usuário.

    Get-ADPrincipalGroupMembership username | select name

    Agradeço desde já pela atenção.


    • Editado Allan_hsantos sexta-feira, 18 de setembro de 2020 11:45
    quinta-feira, 17 de setembro de 2020 21:03

Todas as Respostas

  • Olá

    Criei esse script, para o seu caso.

    É só adaptar para os campos que deseja.

    $user = @(Get-ADuser -f * -SearchBase "OU=Users,OU=Contoso,DC=paulocostati,DC=local" -Properties city,givenName,Surname,SamAccountName,UserPrincipalName,department,title,memberof)
    $group = @($user | Select-Object city,givenName,Surname,SamAccountName,UserPrincipalName,department,title,memberof).MemberOf
    echo $result

    No exemplo do print, o usuario faz parte do grupo DHCP administrator e administrator

    Segue print


    Olá, Obrigada por participar da Comunidade TechNet. Paulo Costa ____________________________________________________________________________ Por favor lembre-se de "Marcar como resposta" as respostas que solucionaram seu problema, é uma forma comum de reconhecer aquelas pessoas que te ajudaram, e faz com que seja mais fácil para os outros visitantes encontrar a solução depois. Microsoft oferece esse serviço de forma gratuita, com a finalidade de ajudar os usuários e ampliar a base de dados de conhecimentos relacionados com os produtos e tecnologias de Microsoft. Este conteúdo é proporcionado "tal qual" e não implica nenhuma responsabilidade por parte de Microsoft

    sexta-feira, 18 de setembro de 2020 02:43
  • Ola Paulo,

    Obrigado pelo breve retorno, porém tenho algumas dúvidas:

    1) Se para o exemplo que você mandou, o usuário é membro dos grupos DHCP administrator e administrator, não deveria aparecer duas linhas (uma para cada grupo)?

    2) Como que eu faço para exportar esses arquivos para uma planilha em Excel? Tentei os comandos Export-Csv e Export-Clixml mas nenhum dos dois funcionou.

    3) Seria possível obter somente o nome dos grupos (além das demais informações que preciso) ao invés do caminho completo?

    Seguindo este seu teste, seria melhor se pudesse vir em uma coluna a lista de todos os grupos ao invés de obter o caminho completo:

    DHCP Administrators

    Administrators  

    {CN=DHCP Administrators,CN=Users,DC=paulocostati,DC=local,CN=Administrators,CN=Builtin,DC=paulocostati,DC=local}
    sexta-feira, 18 de setembro de 2020 11:51
  • Ola Paulo,

    Obrigado pelo breve retorno, porém tenho algumas dúvidas:

    1) Se para o exemplo que você mandou, o usuário é membro dos grupos DHCP administrator e administrator, não deveria aparecer duas linhas (uma para cada grupo)?

    2) Como que eu faço para exportar esses arquivos para uma planilha em Excel? Tentei os comandos Export-Csv e Export-Clixml mas nenhum dos dois funcionou.

    3) Seria possível obter somente o nome dos grupos (além das demais informações que preciso) ao invés do caminho completo?

    Seguindo este seu teste, seria melhor se pudesse vir em uma coluna a lista de todos os grupos ao invés de obter o caminho completo:

    DHCP Administrators

    Administrators  

    sexta-feira, 18 de setembro de 2020 19:44
  • Olá Allan,

    Acredito que sim é possível,

    Irei tentar desenvolver algo desse modo.

    Ja usei esse script que segue  o link, para realizar relatórios, adaptando para minha necessidade,

    Irei tentar realizar alguns filtros, para ficar com uma melhor formatação.

    O link do script, onde contem algo parecido com conversao para html ou pdf:

    https://www.100security.com.br/ad-lista

    Algumas linhas iria precisar ser editadas para a sua necessidade.


    Olá, Obrigada por participar da Comunidade TechNet. Paulo Costa ____________________________________________________________________________ Por favor lembre-se de "Marcar como resposta" as respostas que solucionaram seu problema, é uma forma comum de reconhecer aquelas pessoas que te ajudaram, e faz com que seja mais fácil para os outros visitantes encontrar a solução depois. Microsoft oferece esse serviço de forma gratuita, com a finalidade de ajudar os usuários e ampliar a base de dados de conhecimentos relacionados com os produtos e tecnologias de Microsoft. Este conteúdo é proporcionado "tal qual" e não implica nenhuma responsabilidade por parte de Microsoft

    sábado, 19 de setembro de 2020 05:39
  • Tambem achei esse script que pode ajudar.

    https://gallery.technet.microsoft.com/Add-Active-Directory-users-421da820


    Olá, Obrigada por participar da Comunidade TechNet. Paulo Costa ____________________________________________________________________________ Por favor lembre-se de "Marcar como resposta" as respostas que solucionaram seu problema, é uma forma comum de reconhecer aquelas pessoas que te ajudaram, e faz com que seja mais fácil para os outros visitantes encontrar a solução depois. Microsoft oferece esse serviço de forma gratuita, com a finalidade de ajudar os usuários e ampliar a base de dados de conhecimentos relacionados com os produtos e tecnologias de Microsoft. Este conteúdo é proporcionado "tal qual" e não implica nenhuma responsabilidade por parte de Microsoft

    sábado, 19 de setembro de 2020 05:42
  • oi Paulo,

    Consegui obter parcialmente o resultado: Os grupos vieram corretamente, porém não consigo obter o superior direto (manager), Filial (Office), Cargo (title) e departamento.

    Será que consegue ajudar nisso? Acho que é mais fácil do que a demanda anterior.

    ##########Este Script permite obter uma lista de todos os usuários da OU do Brasil e exporta os resultados em um arquivo CSV #########
    ########## A lista contém as seguintes informações:
    # Filial --> city
    # Nome e sobrenome --> givenName + surName
    # Citrix ID --> SamAccountName
    # E-mail --> UserPrincipalName
    # Departamento --> department
    # Cargo --> title
    # Gerente --> manager
    # Status da conta (ativada ou desativada) --> Enabled
    #######################################################################################################################################
    
    Import-Module -Name ActiveDirectory
    
    $UserArray = @()
    $Allusers = Get-ADUser -filter * -SearchBase 'OU=Brasilien,OU=Others,OU=Users,OU=Leschaco,DC=hq,DC=LESCHACO,DC=org' #usuários BR
    $date = Get-Date -Format yyyyMMdd
    foreach($user in $Allusers){
            
        $userGroups = Get-ADPrincipalGroupMembership -Identity $user.samaccountname | select -ExpandProperty Name
        foreach($userGroup in $userGroups){
            
            $userObject = New-Object -TypeName System.Object
            $userObject | Add-Member -NotePropertyName "Nome" -NotePropertyValue $user.givenName
            $userObject | Add-Member -NotePropertyName "Sobrenome" -NotePropertyValue $user.Surname
            $userObject | Add-Member -NotePropertyName "Citrix ID" -NotePropertyValue $user.SamAccountName
            $userObject | Add-Member -NotePropertyName "E-mail" -NotePropertyValue $user.UserPrincipalName
            $userObject | Add-Member -NotePropertyName "Departamento" -NotePropertyValue $user.department #Corrigir isso
            $userObject | Add-Member -NotePropertyName "Cargo" -NotePropertyValue $user.title #Corrigir isso
            $userObject | Add-Member -NotePropertyName "Gerente Direto" -NotePropertyValue $user.manager #Corrigir isso
            $userObject | Add-Member -NotePropertyName "Status Conta" -NotePropertyValue $user.Enabled
            $userObject | Add-Member -NotePropertyName "Member Of" -NotePropertyValue $userGroup
            
            $UserArray +=$userObject
        
        }
    }
    
    #Exporta os resultados para o caminho I:\Brasil\IT\Controles\Scripts\Active Users BR\resultado.csv
    $UserArray | Export-Csv -Path "I:\Brasil\IT\Controles\Scripts\Active Users BR\resultado2.csv" -NoTypeInformation
    
    
    
    #Get-ADUser -Filter * -Properties * -SearchBase 'OU=Brasilien,OU=Others,OU=Users,OU=Leschaco,DC=hq,DC=LESCHACO,DC=org' | more
    


    domingo, 20 de setembro de 2020 18:09