PowerShell es una herramienta esencial para los administradores de IT, y facilita la auditoría de cuentas de usuario de Active Directory con el comando Get-AdUser. En esta guía, vamos a detallar cómo empezar con el popular cmdlet de Active Directory.
Introducción al cmdlet Get-AdUser de PowerShell
El cmdlet Get-AdUser es uno de los cmdlets de PowerShell de Active Directory más populares. Permite obtener un objeto de usuario especificado, o realizar búsquedas personalizables para obtener múltiples objetos de usuario.
El parámetro Identity se usa para especificar qué usuario de Active Directory obtener. Tienes varias opciones para identificar al usuario:
- Puedes utilizar su nombre distintivo (DN), GUID, identificador de seguridad (SID) o nombre de cuenta de Seguridad de Administrador (SAM).
- También puedes establecer el parámetro en una variable de objeto de usuario como
$UserA
o pasar un objeto de usuario a través del pipeline al parámetro Identity.
Puedes usar los parámetros Filter o LDAPFilter para buscar y obtener más de un usuario. El parámetro Filter utiliza el Lenguaje de Expresiones de PowerShell (PSL) para consultar Active Directory.
La sintaxis del lenguaje de expresión de PowerShell brinda a los administradores un sólido soporte de conversión de tipos para los tipos de valor aceptados por el parámetro Filter. Si ya tienes cadenas de consulta del Protocolo Ligero de Acceso a Directorios (LDAP), utiliza en su lugar el parámetro LDAPFilter.
Si no se han establecido parámetros explícitamente, Get-AdUser muestra un conjunto predeterminado de propiedades de objeto de usuario. Para recuperar propiedades adicionales, utiliza el parámetro Properties. Nos adentraremos en algunos de los parámetros que puedes utilizar más adelante en este artículo.
Cómo utilizar Get-AdUser y requisitos previos
Antes de poder utilizar Get-AdUser y otros comandos de PowerShell relacionados con Active Directory, debes asegurarte de que el módulo de Active Directory esté instalado y cargado en tu estación de trabajo. Según la versión de Windows que estés utilizando, hay varios métodos que puedes seguir para instalar el cmdlet.
Por motivos de concisión, repasaré los dos métodos más comunes que probablemente seguirás como administrador o profesional de TI que administra tu Active Directory local.
En primer lugar, puedes utilizar el siguiente comando de PowerShell para instalar la herramienta Remote Server Administration Tools (RSAT) directamente desde Windows Update.
Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"
El segundo método es utilizar la aplicación Configuración para instalar la herramienta RSAT directamente. Haz clic en Inicio-> Configuración -> Aplicaciones -> Funciones opcionales -> Agregar una característica -> y marca la casilla en la opción RSAT: Herramientas de Servicios de Dominio de Active Directory y Servicios de Directorio Ligero.
Haz clic en el botón Instalar.
Cómo encontrar una cuenta de usuario de AD usando el parámetro -Identity
Bien, vamos a empezar a usar el cmdlet y mostrarte cómo puedo ayudarte a ser más competente (¡y rápido!) para obtener la información que necesitas. Estoy trabajando en mi entorno de laboratorio de Hyper-V (Windows Server 2022 Active Directory), y estoy conectado en una máquina virtual (VM) de cliente de Windows 10 21H1. Busqué en el Menú de Inicio ‘Módulo de Active Directory para Windows PowerShell’ y lo abrí como ‘Ejecutar como administrador’.

Primero, dejame encontrar un usuario de dominio basado en el atributo sAMAccountName.
Get-ADUser breinders

Ahí lo tienes. Ahora podemos usar el atributo objectGUID (o GUID) para encontrar un usuario. Vamos a intentarlo:
Get-ADUser bdcaaf45-e993-4be7-83d2-c1d280edc250

Ah, misma cuenta de usuario. Excelente. También podemos buscar un usuario basado en su Identificador de Seguridad, o SID.
Get-ADUser S-1-5-21-3437955921-3370966048-1812589592-1107

Sí, un poco repetitivo, pero captas la idea. También puedes usar el Apellido del usuario, Nombre, UserPrincipalName, y otros.
Usando el filtro Get-AdUser
En entornos más grandes, no recomendaría escribir solo ‘Get-AdUser’ ya que comenzará a recuperar TODOS los objetos de usuario en tu dominio AD adjunto. No solo esto llenará tu consola de datos, sino que también podría poner una presión notable en el controlador de dominio que tu estación de trabajo está utilizando.
Si tan solo pudiéramos filtrar toda la base de usuarios y buscar usuarios específicos basados en algunas propiedades. ¡Bueno, eso es exactamente para lo que sirve el parámetro ‘-filter’!
El parámetro ‘-filter’ especifica una cadena de consulta que recupera objetos de AD. Esta cadena utiliza la sintaxis de Lenguaje de Expresión de PowerShell (PEL). La sintaxis de PEL proporciona un soporte de conversión de tipo rico para los tipos de valor recibidos por el Filtro parámetro. La sintaxis utiliza una representación en orden, lo que significa que el operador se coloca entre el operando y el valor. Veamos algunos ejemplos para que te hagas una mejor idea.
Primero, descubramos todas las cuentas que están ‘habilitadas’.
Get-ADUser -filter {Enabled -eq "true"} | ft

Estamos utilizando esa encantadora sintaxis PEL para encontrar todas las cuentas con el campo ‘Enabled’ igual a Verdadero. También estamos canalizando la salida utilizando el cmdlet Format-Table de PowerShell para un formato de visualización más fácil de leer.
A continuación, vamos a mostrar todos los usuarios con una dirección de correo electrónico.
Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail

En primer lugar, observa que estamos utilizando el parámetro ‘-filter’ para incluir solo las cuentas de usuario que no tienen una dirección de correo electrónico ‘null’. O, más simplemente, todas las cuentas con una dirección de correo electrónico. Ya sé, a veces es difícil intentar pensar como una computadora.
En segundo lugar, nos estamos enfocando en las tres propiedades Nombre, Nombre de pila y correo (dirección de correo electrónico). Utilizamos Format-Table y enumeramos esas propiedades. ¡Pan comido!
También puede que desees auditar tus cuentas desde una perspectiva de seguridad. También puedes usar el parámetro ‘-filter’ para encontrar todas las cuentas con el atributo ‘passwordneverexpires’. Eso es generalmente no aconsejable.
Obtener-AdUser where name like?
Otra característica interesante es utilizar varios parámetros con -filter para encontrar solo usuarios específicos que coincidan con las distintas propiedades de un objeto de usuario de AD. Aunque mi entorno de laboratorio es muy pequeño y solo tiene alrededor de diez cuentas de usuario, aún puede demostrar el poder y la flexibilidad de poder encontrar rápidamente las cuentas que estás buscando. Aquí, vamos a encontrar todos los usuarios con ‘Reinders’ en sus nombres.
Get-ADUser -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress
Estamos utilizando el parámetro ‘Nombre’ y encontrando todas las cuentas que tienen ‘Reinders’ en cualquier parte del nombre. Podría ser su nombre, su apellido e incluso un segundo nombre si está ingresado. Si SOLAMENTE deseas encontrar usuarios con Reinders como apellido, cambia el campo -like a “*Reinders”. (Observa que no hay un asterisco (*) al final del campo).
Limitar el alcance de búsqueda de Get-AdUser por Unidad Organizativa
Si tienes un dominio/empresa relativamente grande, es posible que te encuentres con tiempos de consulta más largos al ejecutar estos comandos o impactos innecesarios en el rendimiento de tus controladores de dominio. Vamos a hablar sobre limitar el alcance de estas búsquedas a una Unidad Organizativa (OU) específica.
Podemos utilizar el parámetro ‘-SearchBase’ y especificar una OU (o varias OUs) utilizando la siguiente sintaxis.
Get-ADUser -SearchBase 'OU="Test Users",DC=reinders,DC=local' -filter * -Properties Name,EmailAddress | ft Name,EmailAddress

Aquí, estamos limitando nuestro alcance a todos los usuarios en la OU “Usuarios de prueba”, luego mostramos su nombre y dirección de correo electrónico en formato de tabla.
Usar Get-AdUser con credenciales alternativas
Por defecto, el cmdlet Get-AdUser se ejecuta en el contexto del usuario actualmente conectado. Si deseas ejecutar el comando con credenciales alternativas, puedes utilizar una variable, almacenar las credenciales alternativas en esa variable y luego ejecutar el comando utilizando el interruptor ‘-Credential’.
$cred = Get-Credential Get-ADUser -Credential $cred -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress
Otra vez, ¡sencillo y directo!
Trabajando con el parámetro Propiedades de Get-AdUser
I’ve shown a few examples of the ‘-Properties’ parameter, but let’s take a step back and explain it a bit.
El parámetro ‘-Properties’ especifica las propiedades del objeto de salida que se van a recuperar del servidor. Por defecto, si no se utiliza, se devuelven y muestran diez propiedades. Cosas como DistinguishedName, si la cuenta está ‘Habilitada’ o ‘Deshabilitada’, el Nombre del usuario, Nombre, GUID y otros atributos más de sistema. Pero hay bastantes disponibles. Utiliza este parámetro para recuperar propiedades que no están incluidas en el conjunto por defecto.
Especifica las propiedades para este parámetro como una lista de nombres separados por comas. Para mostrar todos los atributos que están definidos en el objeto, especifica * (asterisco).
Para acceder a estas otras propiedades, simplemente especifícalo; utiliza el nombre de la propiedad. Para propiedades que no son por defecto o extendidas, debes especificar el nombre de visualización del atributo del Protocolo Ligero de Acceso a Directorios (LDAP).
Vamos a ver algunos ejemplos.
Get-ADUser -filter * -Properties Name,PasswordLastSet | ft Name,PasswordLastSet

El ejemplo anterior muestra todos los usuarios en el dominio con su Nombre y la fecha/hora en que se estableció/restableció su contraseña.
Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated

Esto muestra cuándo se creó la cuenta en Active Directory. Terminemos con una consulta para traer el Nombre, Departamento y Gerente para cada cuenta.
Get-ADUser -filter * -Properties Name,Department,Manager | ft Name,Department,Manager

Un ejemplo final y excelente uso del comando Export-Csv. Si necesitas obtener una lista de todos los usuarios en un dominio e incluir todas las propiedades, adelante y ejecuta este comando para exportarlo todo a un archivo CSV conveniente.
Get-ADUser -filter * -properties * | Export-CSV c:\temp\Users.csv
Resumen
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.
A menudo, es sorprendentemente fácil pensar en muchos casos de uso en los que puedes utilizar este comando para resolver un problema, crear documentación para otros ingenieros y ayudar en los procesos de resolución de problemas en general. Puede ser muy útil. Y, por supuesto, utilizar algunos de estos comandos para generar un script de PowerShell… ¡siempre mejora la eficiencia!
No dudes en dejar cualquier pregunta o comentario abajo.
Artículo relacionado:
Source:
https://petri.com/get-aduser-how-to-audit-active-directory-users-with-powershell/