Gestión de usuarios a través del cmdlet Get-ADUser Powershell
Introducción
El cmdlet Get-ADUser en PowerShell proporciona muchos parámetros para buscar uno o más usuarios en un dominio de Active Directory (AD).
De forma predeterminada, PowerShell se ejecuta utilizando la cuenta que ha iniciado sesión en la máquina. Si desea ejecutar un comando usando una cuenta diferente, puede forzar a PowerShell a solicitarle las credenciales usando este modificador antes de su comando:
$cred =Get-CredentialBuscando un usuario específico
-Parámetro de identidad
Utilice el parámetro -Identity si sabe qué usuario de AD desea obtener:
Get-ADUser -Identity “identifier”Especifique uno de los siguientes para el identificador:
- Nombre distinguido (DN)
- SamNombreDeCuenta
- GUID
- sid
Ejemplo
Get-ADUser -Identity "ABBEY.Crawford"Limitar una búsqueda a una unidad organizativa en particular
-Parámetro de base de búsqueda
Utilice el parámetro -SearchBase para limitar la búsqueda a una unidad organizativa específica, especificada por su nombre completo (DN):
Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "distinguishedName of OU"Ejemplo
Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "OU=Versacorp,DC=milkyway,DC=local"-Parámetro de alcance de búsqueda
Combine los parámetros SearchBase y SearchScope para limitar la búsqueda a una unidad organizativa particular y a un número específico de niveles de subunidades organizativas. Por ejemplo, para buscar cuentas de usuario en una unidad organizativa y sus unidades organizativas secundarias inmediatas, especifique un valor de 1 para SearchScope. Para incluir unidades organizativas secundarias y nietas, utilice un valor de 2.
Get-ADUser -SearchBase " distinguishedName of OU " -SearchScope "2"Ejemplo
Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "OU=Versacorp,DC=milkyway,DC=local" -SearchScope "2"Filtrado para conjuntos específicos de usuarios
-Parámetro de filtro
Si no conoce el valor exacto de algún identificador, puede especificar una propiedad para filtrar y un valor para el filtro, de la siguiente manera:
Get-ADUser -Filter “filter value”Operadores
| Operator | Meaning | Sample expression |
| -eq | Equal to | Name -like ‘Inga’ |
| -ne | Not equal to | Country -ne ‘US’ |
| -gt | Greater than | BadLogonCount -gt ‘0’ |
| -ge | Greater than or equal | Modified -ge ’06-04-2021 12:00:00? |
| -lt | Less than | LastLogonTimeStamp -lt ’01-08-2020? |
| -le | Less than or equal | Created -le ’01-08-2020? |
| -like | Wildcard search | Mail -like ‘*@xyz.com’ |
| -notlike | Wildcard search with negation | Department -notlike ‘*’ |
| -and | And | Country -eq ‘US’ -and Department -eq ‘Operations’ |
| -or | Or | Country -eq ‘US’ -or -Country -eq ‘UK’ |
Encontrar usuarios con un determinado nombre
Para buscar un usuario con su nombre o parte del nombre, use el parámetro -Filter con la cláusula -like y un valor.
El siguiente ejemplo muestra el uso del parámetro Filtro, que involucra el atributo AD, nombredado. Devuelve usuarios cuyo nombre dado contiene Abbey.
Get-ADUser -Filter “givenname -Like ‘Abbey’”Encontrar usuarios con nombres similares
Puede modificar el comando anterior utilizando el operador comodín para obtener todos los usuarios cuyo nombre comience con una cadena particular, de la siguiente manera:
Get-ADUser -Filter "Name -like 'Abb*'" | Select Name,givenname,surname,samAccountName,distinguishedname | ftGEncontrar todos los usuarios habilitados
Si desea ver todos los usuarios habilitados, puede utilizar este cmdlet:
Get-ADUser -filter {Enabled -eq "true"} | ftEncontrar usuarios discapacitados
Encontrar usuarios discapacitados puede ser muy valioso para facilitar la limpieza de AD. Usando un comando simple con un filtro, "-Filter "Enabled -eq 'false'"" podría devolver cientos de usuarios deshabilitados, ya que algunas empresas prefieren conservar sus objetos de Active Directory para fines de auditoría. Utilice el filtro -SearchBase con una unidad organizativa específica para limitar los resultados. Por ejemplo, este cmdlet encontrará todas las cuentas de usuario deshabilitadas en una unidad organizativa particular:
Get-ADUser -Filter “Enabled -eq 'false'” -SearchBase "CN=Users,DC=Knox,DC=lab" -Properties * | Select Name,Enabled |ftEncontrar usuarios que tengan direcciones de correo electrónico
Para buscar todos los usuarios que tienen buzones asignados, utilice el siguiente comando:
Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mailEncontrar cuentas con caducidad de contraseña no establecida
Para fortalecer la seguridad, es posible que desee buscar todas las cuentas cuyo atributo "contraseña nunca expira" esté establecido en verdadero, de la siguiente manera:
Get-ADUser -Filter {passwordneverexpires -eq "true"} | Select Name, sAMAccountNameEncontrar cuentas de usuario obsoletas
En ocasiones, necesitamos filtrar las cuentas de usuario que no han estado en uso durante algún tiempo. A continuación se explica cómo encontrar todas las cuentas de usuario que no se han utilizado durante los últimos 60 días:
$CutoffDate = (Get-Date).AddDays(-60)
Get-ADUser -Filter "LastLogonDate -lt '$CutoffDate'" -Properties LastLogonDate | Select Name, LastLogonDateEncontrar usuarios creados en una fecha particular
Para ver todas las cuentas de usuario creadas en una fecha particular en Active Directory, puede usar este comando:
Get-ADUser -Filter {Created -lt '7/30/2021'} | Select NameCombinando múltiples filtros
Puede combinar varios filtros para definir criterios complejos para buscar usuarios.
Ejemplo 1
El siguiente comando devolverá todos los usuarios habilitados del departamento de Ventas:
Get-ADUser -Filter "Enabled -eq 'true' -and Department -like 'Sales'" -Properties * | Select Name, Department |ftEjemplo 2
El siguiente cmdlet devolverá todos los usuarios cuyo atributo de departamento no sea nulo y cuyo nombre comience con la letra A:
Get-ADUser -filter {Department -ne "null"} | Where-Object Name -like 'A*'Controlar qué propiedades se muestran
-Parámetro de propiedades
De forma predeterminada, el comando Get-ADUser devuelve solo un puñado de parámetros. Si desea la lista extendida de propiedades de un usuario, use este cmdlet:
Get-ADUser -Identity “Identifier” -Properties *Mostrar un conjunto específico de propiedades
Alternativamente, puede enumerar explícitamente las propiedades que desea ver para un usuario:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,Enabled,mail,department,company,title,c,st,streetaddress |ftMostrar membresía de grupo
Para ver la membresía de un usuario, use este cmdlet:
Get-ADUser -Identity Abbey.crawford -Properties memberof | Select-Object -ExpandProperty memberofMostrando dirección de correo electrónico
Si desea ver la dirección de correo electrónico de un usuario específico, utilice este cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,mail |ftVisualización del nombre principal del usuario (UPN)
Para recuperar el UPN de un usuario, utilice este cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,userprincipalname |ftVisualización del nombre de la cuenta SAM
Para mostrar el nombre de la cuenta SAM de un usuario, utilice este cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,samAccountName |ftMostrar nombre para mostrar
Si desea ver el nombre para mostrar de un usuario (por ejemplo, ya que puede ser diferente en ADUC), puede usar este cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,displayname |ftMostrar nombre distinguido
Para ver el nombre completo de un usuario, use este cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,distinguishedname |ftMostrar direcciones de proxy
Si desea ver las direcciones proxy de un usuario, utilice este cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,proxyaddresses |ftMostrar el administrador de un usuario
Para mostrar el nombre de la cuenta SAM del administrador de un usuario, use este comando:
Get-ADUser “User Identifier” -properties * | select amAccountName, @{Name=’Manager’;Expression={(Get-ADUser($_.manager)).samaccountname}}Mostrar ID de empleado
Para ver el ID de empleado de un usuario, utilice este cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,employeeid |ftMostrar números de teléfono
Para encontrar todos los números de teléfono de un usuario, use este comando:
Get-ADUser -Identity “User Identifier” -Properties * | Select *Phone*Para mostrar estos valores en forma de tabla, use este comando:
Get-ADUser -Identity “User Identifier” -Properties * | Select Name, *Phone* | ftVisualización de la fecha y hora de caducidad de la contraseña
Para ver la fecha de vencimiento de la contraseña de una cuenta, use este cmdlet:
Get-ADUser -Identity “User Identifier” -Properties msDS-UserPasswordExpiryTimeComputed | select Name, {[datetime]::FromFileTime($_.”msDS-UserPasswordExpiryTimeComputed”)}Visualización de la fecha de creación de la cuenta
Para ver cuándo se creó una cuenta de usuario en AD, use este comando:
Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreatedVisualización de la fecha y hora del último inicio de sesión
Si desea ver la última vez que un usuario inició sesión en cualquier sistema, utilice este cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,lastlogondate |ftVisualización de la fecha y hora del último cambio de contraseña
Para ver cuándo un usuario cambió su contraseña por última vez, utilice este cmdlet:
Get-ADUser -Identity Abbey.Crawford -properties PwdLastSet,PasswordLastSet | sort Name | ft Name,PwdLastSet,PasswordLastSetVisualización de los valores de los atributos de extensión
Las organizaciones pueden utilizar atributos de extensión de AD para almacenar información adicional sobre los usuarios. Por ejemplo, la información de la licencia de O365 se puede almacenar en ExtensionAttribute1. Para ver esta información, utilice este cmdlet:
Get-ADUser -Identity “Abbey.Crawford” -Properties * | Select sAMAccountName, extensionAttribute1Ordenar la salida
Para ordenar la salida del comando Get-ADUser usando una propiedad particular, use el siguiente comando:
Get-ADUser -Filter * | Select Name | Sort-Object -Property NameExportar datos a un archivo CSV
Ejemplo 1
El siguiente comando encontrará todas las cuentas de usuario creadas en los últimos 180 días, las ordenará por nombre y exportará la información seleccionada sobre ellas a un archivo CSV:
Get-ADUser -filter * -properties * | Where-Object { $_.created -gt (get-date).AddDays(-180)} | select-object Name, Created | sort Name | export-csv C:\Accounts.csv -NoTypeInformationEjemplo 2
El siguiente comando busca todos los usuarios en una unidad organizativa particular y envía los detalles seleccionados sobre ellos a un archivo CSV:
Aquí está el archivo CSV:
Conclusión
El comando Get-ADUser es una forma versátil de encontrar uno o más usuarios que cumplan ciertos criterios. Puede controlar qué propiedades de usuario se muestran y cómo se ordena la información, y exportar el resultado a un archivo CSV.
Si está interesado en una solución de administración de Active Directory y Azure AD más completa, eche un vistazo a Netwrix GroupID. Ofrece un shell de administración más avanzado que también es totalmente compatible con PowerShell.




































