A popular use of PowerShell is working with Active Directory Directory Services (AD). There are so many time-saving things PowerShell can do with AD objects. Using the PowerShell Get-ADGroupMember
cmdlet and other cmdlets can save you a ton of time.
Grupos do Active Directory são uma ótima maneira de segmentar contas de usuários. Grupos permitem que os administradores definam o acesso a recursos em muitos sistemas.
Neste artigo, vamos usar o PowerShell para obter membros do grupo AD e exportar esses membros. Você pode usar essas informações para gerar diversos relatórios interessantes.

Gerencie e Relate no Active Directory, Exchange e Microsoft 365 com o ManageEngine ADManager Plus. Baixe a versão de avaliação gratuita!
Pré-requisitos
Se você deseja acompanhar este artigo, certifique-se de ter os seguintes requisitos prontos:
- Trabalhando em um computador com Windows 10, associado ao domínio
- Logado com um usuário que pode ler grupos AD e contas de usuários
- Tenha o módulo PowerShell do Active Directory instalado
Aprendendo o Básico
Para consultar grupos e membros de grupos AD, você tem dois cmdlets do PowerShell à sua disposição – Get-AdGroup
e Get-AdGroupMember
.
O comando Get-ADGroup
consulta um controlador de domínio e retorna objetos de grupo AD. Get-AdGroupMember
olha dentro de cada grupo e retorna todas as contas de usuário, grupos, contatos e outros objetos que existem nesse grupo.
Obtendo Grupos AD
Para encontrar grupos AD com o PowerShell, você pode usar o cmdlet Get-ADGroup
. Sem parâmetros, Get-ADGroup
irá consultar o AD e retornar todos os grupos em um domínio usando o parâmetro Filter
. O parâmetro Filter
é obrigatório. Ele existe para limitar os grupos retornados com base em vários critérios.
Por exemplo, para encontrar todos os grupos sem considerar nenhum critério, use Get-ADGroup
e especifique um caractere curinga (asterisco) para o parâmetro Filter
. Você pode ver um exemplo abaixo. Percorrer todos esses grupos pode levar um tempo se você tiver centenas ou até milhares em seu domínio.
Se você precisa encontrar um único grupo, pode usar o parâmetro Identity
.
O parâmetro Identity
é um parâmetro comum entre todos os cmdlets do PowerShell do Active Directory. Ele permite limitar sua consulta a um único objeto AD. Por exemplo, se você precisasse verificar se um grupo chamado HR existe, você poderia descobrir executando o comando abaixo.
Obtendo Membros do Grupo AD com Get-AdGroupMember
Usar o PowerShell para listar membros de um grupo do AD requer o cmdlet Get-ADGroupMember
. Este cmdlet obtém usuários, grupos e objetos de computador em um grupo específico. Talvez você precise encontrar todos os membros do grupo Administradores. Em sua forma mais simples, você simplesmente usaria o parâmetro Identity
novamente especificando o nome do grupo como abaixo.
Observe que
Get-AdGroupMember
retorna apenas a associação de grupo para usuários, grupos e computadores. Ele não retornará outros objetos do AD como contatos.
Enumerando Membros do Grupo Dentro de Outros Membros do Grupo
Como você pode saber, os grupos do AD não apenas podem conter contas de usuário, mas também outros grupos, também chamados de aninhamento. Quando um grupo está aninhado dentro de outro grupo, os membros daquele grupo herdam as mesmas permissões atribuídas ao grupo pai.
Por padrão, o cmdlet Get-AdGroupMember
do PowerShell não retorna membros de grupos aninhados. Para remediar isso, você pode usar o parâmetro Recursive
. Por exemplo, você poderia encontrar membros de grupos aninhados dentro do grupo HR usando o parâmetro Recursive
conforme mostrado abaixo.
Obtendo Múltiplos Grupos/Membros de uma Só Vez
Se você precisar consultar o AD para muitos grupos diferentes ou membros de grupos de uma vez, também pode fazer isso usando um loop foreach do PowerShell. Um loop foreach executa um comando ou código para cada item em uma coleção. Neste caso, essa coleção será uma lista de nomes de grupos.
Talvez você precise encontrar todos os membros dos grupos HR, Contabilidade, e TI. Para fazer isso, primeiro você criaria uma coleção ou array com esses nomes de grupo. O exemplo abaixo define essa coleção como $groupNames
. Em seguida, para cada nome nessa coleção, execute Get-ADGroupMember
fornecendo o nome de cada grupo ao parâmetro Identity
.
Você também poderia usar o
ForEach-Object
cmdlet para iterar sobre os grupos.
Usando Credenciais Alternativas
Assim como muitos outros cmdlets do PowerShell, os cmdlets de grupo AD têm um parâmetro Credential
. Por padrão, sempre que você executa um cmdlet de grupo AD, ele usa suas credenciais logadas para consultar o Active Directory. Esse comportamento exige que você esteja em um computador associado ao domínio conectado como um usuário do Active Directory com permissões.
Mas e se você estiver em um computador de grupo de trabalho ou precisar autenticar-se no AD como um usuário diferente? Nesse caso, você pode usar o parâmetro Credential
. Este parâmetro permite que você especifique um nome de usuário e uma senha para usar na autenticação.
Por exemplo, talvez sua conta de usuário não tenha permissão para realizar uma tarefa do AD. Você tem uma conta de serviço com direitos adicionais. Você pode estar logado como um usuário padrão e ainda assim autenticar-se com a conta de serviço, conforme mostrado abaixo.
O cmdlet Get-Credential
solicita um nome de usuário/senha para criar uma credencial. Essa credencial é então passada para o cmdlet Get-AdGroup
para autenticação.
O parâmetro
Credential
é onipresente no PowerShell para fornecer credenciais de autenticação. Para mais informações, leia Usando o cmdlet Get-Credential do PowerShell e todas as coisas relacionadas a credenciais.
Obtendo membros de grupo com o Get-ADGroup?
Pode parecer contraditório, mas você também pode obter membros de grupo com o cmdlet Get-ADGroup
.
Acontece que o Get-ADGroup
retorna uma propriedade para cada grupo chamada members
. Esta é uma coleção de objetos AD que são membros de um grupo.
Por exemplo, para encontrar os membros do grupo HR novamente sem usar o Get-ADGroupMember
, você poderia fazer algo assim:
Por que usar este método em vez de outro? A principal diferença é que as propriedades members
contêm todos os tipos de objetos AD – não apenas usuários, computadores e outros grupos.
Talvez você tenha contatos dentro de vários grupos. Quando você executa Get-ADGroupMember
, esses contatos não apareceriam. Mas se você disser ao Get-ADGroup
para retornar todos os membros desse grupo e expandir essa coleção como mostrado abaixo, você verá os contatos.
Encontrando Atributos AD Específicos
Na seção básica acima, você estava simplesmente retornando todos os grupos e membros do grupo. As informações retornadas para cada grupo e membro do grupo são apenas um subconjunto dos atributos AD associados a cada tipo de objeto.
Talvez você queira ver o endereço de e-mail de uma conta de usuário, a data do último logon ou outro atributo AD associado? Para fazer isso, você precisará ser criativo.
Talvez você tenha conseguido encontrar todos os membros do grupo HR mas precise também ver o endereço de e-mail de cada conta de usuário?
Filtrando Resultados
Até este ponto, você encontrou todos os grupos e membros do grupo, mas em um ambiente de trabalho diário, raramente você precisa fazer isso. É provável que você precise apenas encontrar um número limitado de cada item. Os cmdlets de grupo AD têm algumas maneiras de lidar com isso.
O Parâmetro Filtro
Como mencionado anteriormente, ambos os cmdlets têm o parâmetro Filtro
. Este parâmetro permite que você limite o que é retornado de muitas maneiras diferentes, fora do escopo deste artigo.
Usando o parâmetro Filter
, você pode limitar os resultados por qualquer atributo do AD, como nome, tipo de grupo, endereço de e-mail, último logon para usuários, entre outros.
Por exemplo, talvez você queira encontrar apenas grupos de segurança. Nesse caso, você especificaria um atributo GroupCategory
e definiria uma condição para garantir que apenas os grupos de Segurança
sejam retornados.
Talvez você queira encontrar todos os grupos de segurança, mas eles não devem ser grupos locais de domínio. Você então adicionaria outra condição (desta vez usando o operador -ne
) para evitar que quaisquer grupos locais de domínio sejam retornados.
Se você gostaria de aprender como criar filtros de consulta, certifique-se de verificar Aprendendo Filtros de Active Directory e LDAP no PowerShell.
Limitando os Resultados de Grupo por Unidade Organizacional (OU)
Talvez você tenha vários grupos aninhados em UOs. Você não necessariamente quer encontrar todos os grupos, mas apenas os grupos em uma OU específica. Nesse caso, você pode usar o parâmetro SearchBase
.
O parâmetro SearchBase
permite que você especifique o nome distinto (DN) de uma OU para começar a procurar grupos. Por exemplo, talvez você tenha uma OU chamada Localizações na raiz do seu domínio. Na OU Localizações, você tem cada OU de local criada como Austin, NYC, e Los Angeles. Você está apenas procurando por grupos na OU NYC e precisa restringir a visualização dos outros.
Uma estrutura de OU do AD de exemplo é mostrada abaixo. Observe que outros grupos existem fora das UOs de Localizações.
Talvez você precise encontrar todos os grupos AD que estão apenas na OU NYC. Para limitar a consulta, você usaria o parâmetro SearchBase
fornecendo o DN conforme mostrado abaixo. Todos os grupos dentro da OU Locations são retornados.
Mas agora você precisa encontrar todos os grupos em todas as OUs sob a OU Locations. Get-ADGroup
retorna apenas grupos na OU Locations em si – não nas OUs filhas.
Para retornar grupos dentro de OUs filhas, você precisaria usar o parâmetro SearchScope
. Este parâmetro é semelhante ao parâmetro Recursive
no sentido de que ele inspecionará objetos filhos também.
Por exemplo, para encontrar todos os grupos em qualquer OU sob a OU Locations, especifique Subtree
ou 2
. Este valor para SearchScope
diz ao Get-ADGroup
para olhar recursivamente para todos os filhos, netos e assim por diante das OUs.
Para uma análise completa das opções do parâmetro SearchScope
, consulte a documentação do Get-ADGroup
.
Exportando Grupos e Membros AD
Agora você finalmente sabe como consultar e retornar os grupos e membros do grupo que você precisa. Todas essas informações são enviadas para o console do PowerShell. Mas agora você precisa colocar essas informações em um arquivo CSV ou planilha do Excel.
A única coisa que você precisa fazer agora é enviar todas essas informações para um arquivo.
Exportando para um CSV
Um formato popular para exportar informações AD é um CSV. O PowerShell tem um cmdlet útil que permite criar facilmente arquivos CSV a partir da saída do PowerShell chamado Export-Csv
.
Você pode criar um arquivo CSV a partir de qualquer comando abordado neste artigo ao redirecioná-lo para Export-Csv
. Usando o exemplo abaixo, você redirecionará todo o resultado que Get-AdGroup
retornaria para o console para um arquivo CSV.
Para mais informações sobre este útil cmdlet, confira Export-Csv: A Maneira PowerShell de Tratar Arquivos CSV como Cidadãos de Primeira Classe.
Você também pode exportar facilmente os resultados para CSV via cmdlet Get-AdGroupMember
.
Exportando para o Excel
O PowerShell não tem uma maneira nativa de exportar informações para o Excel. Mas você sempre pode baixar o módulo da comunidade chamado ImportExcel gratuitamente. Este módulo traz capacidades de exportação semelhantes a CSV diretamente para planilhas do Excel. Para instalar o módulo PowerShell, execute Install-Module ImportExcel -Scope CurrentUser
.
Usando o exemplo acima, ao invés de um arquivo CSV, se você precisasse exportar os grupos para uma planilha do Excel, você usaria o cmdlet Export-Excel
como mostrado abaixo.
Encontre senhas vazadas e inseguras no seu Active Directory verificando a lista de senhas do NCSC.
O módulo ImportExcel possui uma tonelada de funcionalidades para trabalhar com o Excel. Se você precisa de uma planilha mais sofisticada, provavelmente ele tem uma função para você.
Para obter mais informações sobre o uso do módulo ImportExcel, leia este artigo. Ele fornece uma ótima introdução a alguns casos de uso comuns que ele pode lidar.
Gerencie e relate o Active Directory, Exchange e o Microsoft 365 com o ManageEngine ADManager Plus. Baixe a avaliação gratuita!
Conclusão
Usando apenas dois cmdlets do PowerShell, você pode fazer praticamente qualquer coisa com grupos do AD. Este artigo foi apenas uma introdução à funcionalidade disponível para você. Use o conhecimento adquirido aqui, siga alguns dos links para mergulhos mais profundos nos tópicos do artigo e veja o que você pode construir!