O PowerShell é uma ferramenta essencial para os administradores de TI, e facilita a auditoria de contas de usuário do Active Directory com o comando Get-AdUser. Neste guia, vamos detalhar como começar com o popular cmdlet do Active Directory.
Introdução ao cmdlet do PowerShell Get-AdUser
O cmdlet Get-AdUser é um dos cmdlets do PowerShell do Active Directory mais populares. Ele permite obter um objeto de usuário especificado, ou permite realizar pesquisas personalizáveis para obter vários objetos de usuário.
O parâmetro Identity é usado para especificar qual usuário do Active Directory buscar. Você tem várias opções sobre como identificar o usuário:
- Você pode usar o nome distinto (DN), GUID, identificador de segurança (SID) ou nome de conta do Security Account Manager (SAM).
- Você também pode definir o parâmetro como uma variável de objeto de usuário como
$UserA
ou passar um objeto de usuário pelo pipeline para o parâmetro Identity.
Você pode usar os parâmetros Filtro ou LDAPFilter para pesquisar e obter mais de um usuário. O parâmetro Filtro usa a Linguagem de Expressão do PowerShell (PSL) para consultar o Active Directory.
A sintaxe de linguagem de expressão PowerShell dá suporte à conversão de tipo para os tipos de valor aceitos pelo parâmetro Filtro. Se você já tiver strings de consulta do Protocolo de Acesso a Diretórios Leves (LDAP), use o parâmetro FiltroLDAP em vez disso.
Se nenhum parâmetro for explicitamente definido, o Get-AdUser exibe um conjunto padrão de propriedades do objeto de usuário. Para recuperar propriedades adicionais, use o parâmetro Propriedades. Abordaremos alguns dos parâmetros que você pode usar mais tarde neste artigo.
Como usar o Get-AdUser e pré-requisitos
Antes de poder usar o Get-AdUser e outros comandos do PowerShell relacionados ao Active Directory, você precisa garantir que o módulo do Active Directory esteja instalado e carregado em sua estação de trabalho. Com base na versão do Windows que você está usando, existem métodos variados que você pode seguir para instalar o cmdlet.
Por uma questão de concisão, passarei pelos dois métodos mais prevalentes pelos quais você provavelmente passará como administrador ou profissional de TI gerenciando seu Active Directory local.
Primeiramente, você pode usar o seguinte comando do PowerShell para instalar a ferramenta Ferramentas de Administração do Servidor Remoto (RSAT) diretamente do Windows Update.
Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"
O segundo método é usar o aplicativo Configurações para instalar a ferramenta RSAT diretamente. Clique em Iniciar -> Configurações -> Aplicativos -> Recursos Opcionais -> Adicionar um recurso -> e marque a opção RSAT: Serviços de Domínio do Active Directory e Ferramentas de Serviços de Diretórios Leves.
Clique no botão Instalar.
Como encontrar uma conta de usuário do AD usando o parâmetro -Identidade
Tudo certo, vamos começar a usar o cmdlet e mostrar como posso ajudá-lo a se tornar mais proficiente (e rápido!) para obter as informações que você precisa. Estou trabalhando em meu ambiente de laboratório do Hyper-V do (Windows Server 2022 Active Directory) e estou logado em uma máquina virtual (VM) cliente do Windows 10 21H1. Procurei no Menu Iniciar por ‘Módulo Active Directory para Windows PowerShell’ e abri como ‘Executar como administrador’.

Primeiro, vamos encontrar um usuário de domínio com base no atributo sAMAccountName
Get-ADUser breinders

Pronto. Agora podemos usar o atributo objectGUID (ou GUID) para encontrar um usuário. Vamos tentar:
Get-ADUser bdcaaf45-e993-4be7-83d2-c1d280edc250

Ah, mesma conta de usuário. Excelente. Também podemos pesquisar um usuário com base no seu Identificador de Segurança, ou SID.
Get-ADUser S-1-5-21-3437955921-3370966048-1812589592-1107

Sim, um pouco repetitivo, mas você entendeu. Você também pode usar o Sobrenome, Nome, UserPrincipalName e outros do usuário.
Usando o filtro Get-AdUser
Em ambientes maiores, eu não recomendaria digitar apenas ‘Get-AdUser’, pois começará a recuperar TODOS os objetos de usuário no seu domínio AD anexado. Isso não apenas começará a inundar seu console com dados, mas também poderá sobrecarregar significativamente o controlador de domínio que sua estação de trabalho está utilizando.
Se apenas pudéssemos filtrar toda a base de usuários e procurar por usuários específicos com base em algumas propriedades. Bem, é exatamente para isso que o parâmetro ‘-filter’ serve!
O parâmetro ‘-filter’ especifica uma string de consulta que recupera objetos AD. Essa string usa a sintaxe da Linguagem de Expressão do PowerShell (PEL). A sintaxe PEL fornece suporte para conversão de tipo rico para tipos de valor recebidos pelo parâmetro Filter . A sintaxe usa uma representação em ordem, o que significa que o operador é colocado entre o operando e o valor. Vamos passar por alguns exemplos para lhe dar uma ideia melhor.
Primeiro, vamos descobrir todas as contas que estão ‘Ativadas’.
Get-ADUser -filter {Enabled -eq "true"} | ft

Estamos usando aquela adorável sintaxe PEL para encontrar todas as contas com o campo ‘Enabled’ igual a True. Também estamos direcionando a saída utilizando o cmdlet PowerShell Format-Table para um formato de exibição mais fácil de ler.
Em seguida, vamos exibir todos os usuários com um endereço de e-mail.
Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail

Primeiramente, observe que estamos usando o parâmetro ‘-filter’ para incluir apenas contas de usuário que não têm um endereço de e-mail ‘null’. Ou, de forma mais simples, todas as contas com um endereço de e-mail. Eu sei, às vezes é difícil tentar pensar como um computador.
Em segundo lugar, estamos nos concentrando nas três propriedades Nome, Nome Próprio e mail (endereço de e-mail). Usamos o Format-Table e listamos essas propriedades. Moleza!
Você também pode querer auditar suas contas sob uma perspectiva de segurança. Você também pode usar o parâmetro ‘-filter’ para encontrar todas as contas com o atributo ‘passwordneverexpires’. Isso é geralmente não aconselhável.
Get-AdUser onde nome como?
Outro recurso legal é usar vários parâmetros com -filter para encontrar apenas usuários específicos que correspondam às várias propriedades de um objeto de usuário AD. Embora meu ambiente de laboratório seja extremamente pequeno e tenha apenas cerca de dez contas de usuário, ele ainda pode demonstrar o poder e a flexibilidade de ser capaz de encontrar rapidamente as contas que você procura. Aqui, vamos encontrar todos os usuários com ‘Reinders’ em seus nomes.
Get-ADUser -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress
Estamos usando o parâmetro ‘Name’ e encontrando todas as contas que têm ‘Reinders’ em qualquer lugar do nome. Pode ser o primeiro nome, o sobrenome e até mesmo um nome do meio, se for inserido. Se você SÓ quisesse encontrar usuários com Reinders como o sobrenome, altere o campo -like para ser “*Reinders”. (Observe, não há um asterisco (*) no final do campo).
Limitando o escopo de pesquisa Get-AdUser por Unidade Organizacional
Se você tiver um domínio/empresa relativamente grande, pode enfrentar tempos de consulta mais longos ao executar esses comandos ou impactos de desempenho desnecessários em seus controladores de domínio. Vamos falar sobre limitar o escopo dessas buscas a uma unidade Organizacional (OU) específica.
Podemos usar o parâmetro ‘-SearchBase’ e especificar uma OU (ou várias OUs) usando a seguinte sintaxe.
Get-ADUser -SearchBase 'OU="Test Users",DC=reinders,DC=local' -filter * -Properties Name,EmailAddress | ft Name,EmailAddress

Aqui, estamos limitando nosso escopo a todos os usuários na OU “Test Users” e, em seguida, exibindo seu nome e endereço de email em formato de tabela.
Usando Get-AdUser com credenciais alternativas
Por padrão, o cmdlet Get-AdUser é executado no contexto do usuário atualmente conectado. Se você desejar executar o comando com credenciais alternativas, poderá usar uma variável, armazenar as credenciais alternativas nessa variável e, em seguida, executar o comando usando o switch ‘-Credential’.
$cred = Get-Credential Get-ADUser -Credential $cred -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress
Novamente, simples e direto!
Trabalhando com o parâmetro Propriedades do Get-AdUser
I’ve shown a few examples of the ‘-Properties’ parameter, but let’s take a step back and explain it a bit.
O parâmetro ‘-Properties’ especifica as propriedades do objeto de saída a serem recuperadas do servidor. Por padrão, se você não o usa, são retornadas e exibidas dez propriedades. Coisas como DistinguishedName, se a conta está ‘Ativada’ ou ‘Desativada’, GivenName do usuário, Name, GUID e outros atributos mais semelhantes a sistemas. Mas há bastante disponíveis. Use este parâmetro para recuperar propriedades que não estão incluídas no conjunto padrão.
Especifique as propriedades para este parâmetro como uma lista separada por vírgulas de nomes. Para exibir todos os atributos definidos no objeto, especifique * (asterisco).
Para acessar essas outras propriedades, basta especificá-las; use o nome da propriedade. Para propriedades que não são padrão ou estendidas, você deve especificar o nome de exibição do Lightweight Directory Access Protocol (LDAP) do atributo.
Vamos passar por alguns exemplos.
Get-ADUser -filter * -Properties Name,PasswordLastSet | ft Name,PasswordLastSet

O exemplo acima mostra todos os usuários no domínio com seus nomes e a data/hora em que suas senhas foram modificadas pela última vez.
Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated

Isso mostra quando a conta foi criada no Active Directory. Vamos encerrar isso com uma consulta para trazer o Nome, Departamento e Gerente de cada conta.
Get-ADUser -filter * -Properties Name,Department,Manager | ft Name,Department,Manager

Um exemplo final e ótimo uso do comando Export-Csv. Se você precisar obter uma lista de todos os usuários em um domínio e incluir todas as propriedades, vá em frente e execute este comando para exportar tudo para um arquivo CSV conveniente.
Get-ADUser -filter * -properties * | Export-CSV c:\temp\Users.csv
Resumo
I hope you gained some knowledge about how to use the Get-AdUser PowerShell command. This really scratches the surface, however, this is one aspect I like about the power of PowerShell: Learning about the core properties of a cmdlet and extrapolating it out to your organization.
Muitas vezes, é incrivelmente fácil pensar em muitos casos de uso nos quais você pode utilizar esse comando para resolver um problema, criar alguma documentação para outros engenheiros e ajudar nos processos gerais de solução de problemas. Pode ser muito útil. E é claro, usar alguns desses comandos para gerar um script do PowerShell… sempre aumenta a eficiência!
Fique à vontade para deixar qualquer dúvida ou comentário abaixo.
Artigo Relacionado:
Source:
https://petri.com/get-aduser-how-to-audit-active-directory-users-with-powershell/