Búsqueda de sitios web

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-Credential

Buscando 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

OperatorMeaningSample expression
-eqEqual toName -like ‘Inga’
-neNot equal toCountry -ne ‘US’
-gtGreater thanBadLogonCount -gt ‘0’
-geGreater than or equalModified -ge ’06-04-2021 12:00:00?
-ltLess thanLastLogonTimeStamp -lt ’01-08-2020?
-leLess than or equalCreated -le ’01-08-2020?
-likeWildcard searchMail -like ‘*@xyz.com’
-notlikeWildcard search with negationDepartment -notlike ‘*’
-andAndCountry -eq ‘US’ -and Department -eq ‘Operations’
-orOrCountry -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 | ftG

Encontrar todos los usuarios habilitados

Si desea ver todos los usuarios habilitados, puede utilizar este cmdlet:

Get-ADUser -filter {Enabled -eq "true"} | ft

Encontrar 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 |ft

Encontrar 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,mail

Encontrar 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, sAMAccountName

Encontrar 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, LastLogonDate

Encontrar 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 Name

Combinando 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 |ft

Ejemplo 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 |ft

Mostrar 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 memberof

Mostrando 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 |ft

Visualizació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 |ft

Visualizació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 |ft

Mostrar 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 |ft

Mostrar nombre distinguido

Para ver el nombre completo de un usuario, use este cmdlet:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,distinguishedname |ft

Mostrar direcciones de proxy

Si desea ver las direcciones proxy de un usuario, utilice este cmdlet:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,proxyaddresses |ft

Mostrar 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 |ft

Mostrar 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* | ft

Visualizació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,WhenCreated

Visualizació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 |ft

Visualizació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,PasswordLastSet

Visualizació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, extensionAttribute1

Ordenar 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 Name

Exportar 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 -NoTypeInformation

Ejemplo 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.

Artículos relacionados