Búsqueda de sitios web

Get-ADUser: busque información de usuario de Active Directory con PowerShell


El cmdlet de PowerShell Get-ADUser le permite obtener información sobre un usuario de Active Directory, sus atributos y buscar entre los usuarios del dominio. Es uno de los cmdlets de PowerShell más populares para obtener información de AD. Con el cmdlet Get-ADUser, puede obtener el valor de cualquier atributo de una cuenta de usuario de AD, listar usuarios de dominio con atributos, exportar informes de usuario a archivos CSV y usar varios criterios para seleccionar y filtrar usuarios de dominio.

Cmdlet Get-ADUser en el módulo PowerShell de Active Directory

Este

Get-ADUser

El cmdlet se incluye en un módulo especial para interactuar con Active Directory: Módulo de Active Directory para Windows PowerShell. Los cmdlets del módulo RSAT-AD-PowerShell le permiten realizar varias operaciones en objetos de AD.

Nota. Anteriormente, para obtener información sobre los atributos de las cuentas de usuario de AD, tenía que usar diferentes herramientas: consola ADUC (incluidas las consultas AD guardadas), scripts VBS, dsquery, etc. Todas estas herramientas se pueden reemplazar fácilmente por el cmdlet Get-ADUser .

En este ejemplo, mostraremos cómo usar el cmdlet de PowerShell Get-ADUser para obtener información sobre la última vez que se cambió la contraseña de un usuario, cuándo caduca la contraseña y las propiedades de otros usuarios.

Para usar el módulo RSAT-AD-PowerShell, debe ejecutar la consola PowerShell elevada e importar el módulo con el comando:

Import-Module ActiveDirectory

El módulo RSAT-AD-PowerShell se instala de manera predeterminada en Windows Server 2012 (y más reciente) cuando implementó el rol de Servicios de dominio de Active Directory (AD DS). Para instalar el módulo en un host de Windows Server miembro del dominio, ejecute el comando:

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

Para usar el cmdlet Get-ADUser en el escritorio de Windows 10/11, debe instalar la versión adecuada de RSAT. Puede habilitar RSAT a través de Configuración -> Aplicaciones -> Funciones opcionales -> Agregar una función -> RSAT: herramientas de servicios de directorio ligero y servicios de dominio de Active Directory.

Puede instalar el módulo RSAT AD en Windows 10 y 11 con PowerShell:

Add-WindowsCapability -online -Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

Si el módulo RSAT-AD-PowerShell no está instalado en la computadora, cuando ejecute el comando Get-ADUser, aparecerá un error:

Get-ADUser: The term 'get-aduser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Verifique que el módulo esté instalado y, si es necesario, impórtelo en su sesión de PowerShell:

Import-Module ActiveDirectory

También hay una forma de usar el módulo AD-PowerShell sin instalar RSAT en su computadora. Basta con copiar los archivos del módulo principal e importar el módulo a la sesión de PowerShell:

Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.dll"
Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.resources.dll"

Se puede obtener una lista completa de todos los argumentos del cmdlet Get-ADUser de la siguiente manera:

help Get-ADUser

¿Cómo encontrar propiedades de lista y usuario de AD con Get-ADUser?

Para usar el cmdlet Get-ADUser, no necesita ejecutarlo en una cuenta con un administrador de dominio o permisos delegados. Cualquier usuario de dominio de AD autorizado puede ejecutar comandos de PowerShell para obtener los valores de la mayoría de los atributos de objetos de AD (excepto los confidenciales, vea el ejemplo en el artículo Solución de contraseña de administrador local - LAPS). Si necesita ejecutar el comando Get-ADUser en una cuenta diferente, use el parámetro -Credential.

Para mostrar la lista de todas las cuentas de usuario del dominio, ejecute este comando:

Get-ADUser -filter *

Importante. No se recomienda ejecutar este comando en los dominios de Active Directory con una gran cantidad de cuentas de usuario. Esto puede suponer una gran carga para el controlador de dominio que proporciona la información de AD.

Utilice el cmdlet Set-ADUser para cambiar los atributos de usuario de Active Directory.

Para mostrar las propiedades de un usuario específico, use el

-Identity

parámetro. La identidad puede ser un nombre de usuario, inicio de sesión (SAMAccountName), DN (Nombre distinguido), SID o GUID.

Los siguientes comandos de PowerShell devolverán el mismo resultado para la misma cuenta de usuario de AD:

Get-ADUser -Identity b.smith
Get-ADUser -Identity "CN=Brian Smith,OU=Users,OU=Berlin,DC=a-d,DC=loc"
Get-ADUser -Identity "Brian Smith"

De forma predeterminada, el cmdlet Get-ADUser devuelve solo 10 atributos de usuario básicos (de más de 120 propiedades de cuenta de usuario): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, estado de la cuenta (Habilitado: Verdadero/Falso según UserAccountControl AD atributo), etc. En este caso, la salida del cmdlet no contiene información sobre la hora del último cambio de contraseña de usuario.

Para ejecutar una consulta de AD en un controlador de dominio específico, use la opción -Servidor:

Get-ADUser -Server DC01.a-d.site -Identity tstuser

Si necesita obtener datos de usuario de otro dominio de AD, debe especificar el nombre del controlador de dominio y las credenciales para acceder a él:

$ADcred = Get-Credential
Get-ADUSer tstuser -Server DC01.contoso.com -Credential $ADcred

Para mostrar la información detallada sobre todos los atributos de usuario disponibles, ejecute este comando:

Get-ADUser -identity tuser -properties *

El cmdlet Get-ADUser con el modificador Propiedades * enumera todos los atributos del usuario de AD y sus valores (incluidos los vacíos). Una lista similar de atributos de usuario está disponible en el complemento gráfico Usuarios y equipos de Active Directory (

dsa.msc

) en la pestaña del editor de atributos.

Luego iremos al formateo de la salida Get-ADUser para que se muestren los atributos de usuario necesarios. Por ejemplo, desea mostrar los valores de las siguientes propiedades de usuario:

  • La contraseña expiró

  • ContraseñaÚltimaConfiguración

  • La contraseña nunca expira

  • LastLogonTimestamp

Ejecute el comando:

Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp

Ahora, en los datos del usuario, se encuentra la información sobre el estado de la contraseña de la cuenta (Caducada: Verdadero/Falso), la fecha del último cambio de contraseña y la hora del último inicio de sesión del usuario en el dominio (

lastlogontimestamp

atributo). Para mostrar esta información en una vista de tabla más conveniente y eliminar todos los atributos innecesarios, use Select-Object -Property y Format-Table:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Get-ADUser -SearchBase: obtención de usuarios de unidades organizativas específicas

Para mostrar usuarios solo de un contenedor de dominio específico (unidad organizativa), utilice el parámetro -SearchBase:

Get-ADUser -SearchBase 'OU=London,DC=a-d,DC=loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Si necesita seleccionar usuarios de varias unidades organizativas a la vez, use el siguiente script de PowerShell:

$OUs = "OU=NY,DC=a-d,DC=com","OU=LA,DC=a-d,DC=com","OU=MA,DC=a-d,DC=com"
$OUs | foreach {Get-ADUser -SearchBase $_ -Filter * |select Name, Enabled}

¿Cómo obtener la dirección de correo electrónico de un usuario de AD usando PowerShell?

La dirección de correo electrónico del usuario es uno de los atributos del objeto de usuario en Active Directory. Para enumerar las direcciones de correo electrónico de los usuarios, debe agregar el campo EmailAddress a las propiedades del cmdlet Get-ADUser.

Get-ADUser -filter * -properties EmailAddress -SearchBase 'OU=Paris,OU-Fr,DC=a-d,DC=com'| select-object Name, EmailAddress

La lista de cuentas de usuario habilitadas con direcciones de correo electrónico:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table

Para obtener la lista de usuarios de Active Directory sin dirección de correo electrónico:

Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -eq $null

El siguiente ejemplo le permite exportar una lista de correo electrónico de la empresa desde AD a un archivo CSV. Más tarde, puede importar esta lista de direcciones CSV a clientes de correo electrónico de escritorio como Outlook o Mozilla Thunderbird:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\adress_list.csv

Get-ADUser: Exportación de usuarios de Active Directory a CSV con PowerShell

La lista resultante de usuarios de dominio con atributos se puede exportar a un archivo de texto:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

O puede exportar la lista de usuarios de AD a un archivo CSV:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where {$_.name -like "*Dmitry*"} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\tmp\user-passwords-expires.csv -Append -Encoding UTF8

La lista de usuarios de AD se puede exportar directamente a un archivo de Excel usando PowerShell.

Ejemplos de filtros Get-ADUser

Usando el interruptor -Filter, puede filtrar la lista de cuentas de usuario por uno o más atributos. Esto es útil para buscar usuarios de AD cuyos atributos coincidan con criterios específicos. Los valores de los atributos específicos de los usuarios de Active Directory se pueden especificar como argumentos para este parámetro. Cuando usas el

-Filter

parámetro, el cmdlet Get-ADUser solo mostrará los usuarios que coincidan con los criterios de filtro.

Por ejemplo, quiero enumerar cuentas de usuario activas (habilitadas) cuyo nombre contenga "Dmitry". El siguiente ejemplo usa múltiples filtros; puede combinar condiciones mediante los operadores de comparación lógicos de PowerShell. En este ejemplo, los atributos de usuario deben satisfacer ambas condiciones de filtro (-y):

Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * |select name,enabled

Todos los operadores lógicos de PowerShell se pueden usar para seleccionar valores para atributos de usuario (

-eq

,

-ne

,

-gt

,

-ge

,

-lt

,

-le

,

-like

,

-notlike

,

-and

,

-or

, etc.)

Además, puede ordenar la lista resultante de usuarios por un atributo de usuario específico con el cmdlet Sort-Object. También puede usar el cmdlet Where-Object para especificar varios criterios de filtrado a la vez.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase 'OU=NY,DC=a-d,DC=com'| where {$_.name -like "*Dmitry*" -and $_.Enabled -eq $true} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Por lo tanto, puede obtener una lista de usuarios con los atributos necesarios de Active Directory.

Para buscar usuarios por varios atributos a la vez (heredExchangeDN, proxyAddresses, SAMAccountName, Surname, DisplayName, SamAccountName, PhysicalDeliveryOfficeName, RDN y msExchMailNickname), puede usar la resolución de nombres ambiguos (

ANR

) característica:

Get-ADUser -Filter {anr -eq 'John'} | select Name

Sugerencia. Al buscar usuarios de Active Directory mediante Get-ADUser, desde una perspectiva de rendimiento, es preferible especificar los criterios mediante el atributo Filter que utilizar la canalización para el cmdlet where-object. En este caso, el filtrado de los resultados de la selección se realizará en el controlador de dominio y se transferirá un conjunto más pequeño de datos a su computadora a través de la red.

Puede usar un filtro LDAP en las consultas Get-ADUser. Un filtro LDAP se especifica mediante el atributo -LdapFilter.

Get-ADUser -LDAPFilter '(&(department=it)(title=sysops))'

Ejemplos de Get-ADUser de PowerShell

Mostremos algunos ejemplos de comandos de PowerShell más útiles para consultar a los usuarios de Active Directory con varios filtros. Puede combinarlos para obtener la lista requerida de objetos de usuario de AD:

Usuarios de Display AD, cuyo nombre comienza con Joe:

Get-ADUser -filter {name -like "Joe*"}

Puede usar PowerShell para calcular el número total de cuentas de usuario en Active Directory:

Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object

Encuentre cuentas de usuario de Active Directory deshabilitadas:

Get-ADUser -Filter {Enabled -eq "False"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table

Puede verificar la fecha de creación de la cuenta de usuario de Active Directory con el comando:

get-aduser -Filter * -Properties Name, WhenCreated | Select name, whenCreated

Puede obtener la lista de usuarios de Active Directory recién agregados creados en las últimas 24 horas:


$lastday = ((Get-Date).AddDays(-1))
Get-ADUser -filter {(whencreated -ge $lastday)}

Enumere las cuentas con una contraseña caducada (puede configurar las opciones de caducidad de la contraseña en la política de contraseñas del dominio):

Get-ADUser -filter {Enabled -eq $True} -properties name,passwordExpired| where {$_.PasswordExpired}|select name,passwordexpired

Puede usar los cmdlets Get-ADUser y Add-ADGroupMember para crear grupos de usuarios de AD dinámicos (según la ciudad, el cargo, el departamento, etc.).

Tarea: para la lista de cuentas de usuario que se almacenan en un archivo de texto (una cuenta por línea), debe obtener el nombre de la empresa del usuario de AD y guardarlo en un archivo CSV (puede importar fácilmente este archivo CSV a Excel) .

Import-Csv c:\ps\users_list.csv | ForEach {
Get-ADUser -identity $_.user -Properties Name, Company |
Select Name, Company |
Export-CSV c:\ps\users_ad_list.csv -Append -Encoding UTF8
}

Los usuarios que no han cambiado sus contraseñas de dominio en los últimos 90 días:

$90_Days = (Get-Date).adddays(-90)
Get-ADUser -filter {(passwordlastset -le $90_days)}

Encuentre cuentas de usuario inactivas (sin iniciar sesión en el dominio durante más de 180 días). El atributo lastLogonTimestamp se usa para obtener el historial de inicio de sesión del usuario en el dominio:

$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } | ?{$_.Enabled -eq $True} |  Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize

Para obtener la foto de un usuario de Active Directory y guardarla en un archivo jpg, ejecute los siguientes comandos:

$usr = Get-ADUser sjoe -Properties thumbnailPhoto
$usr.thumbnailPhoto | Set-Content sjoe.jpg -Encoding byte

Para obtener una lista de los grupos de AD de los que la cuenta de usuario es miembro:

Get-AdUser sjoe -Properties memberof | Select memberof -expandproperty memberof

Enumere los usuarios de la unidad organizativa que son miembros de un grupo de seguridad de dominio específico:

Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=a-d,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}

Enumere los usuarios de la unidad organizativa que son miembros de un grupo de seguridad de dominio específico:

Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=a-d,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}

Enumere todos los usuarios de la unidad organizativa, excepto los miembros de un grupo específico:

$Users = Get-ADUser -filter * -SearchBase ‘OU=Berlin,DC=a-d,DC=com’ -properties memberOf
ForEach ($User In $Users)
{
$Groups = -join @($User.memberOf)
If ($Groups -notlike '*Domain Admins*')
{
$User.Name
}
}

Exportación de una lista de usuarios de AD con el nombre de la unidad organizativa a la tabla Out-GridView:

get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridView

Verifique que la cuenta de usuario de AD exista:

$SamAccountName='jbrown'
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0)
{  Write-Host "User $SamAccountName doesn’t exist"}

Enumere las computadoras del dominio en las que el usuario puede iniciar sesión (restricción de inicio de sesión a través del atributo de AD LogonWorkstations).

Get-ADUser jbrown -Properties LogonWorkstations | Format-List Name, LogonWorkstations

Consejo. El cmdlet Get-ADComputer se usa para obtener las propiedades de la computadora o buscar varias computadoras desde Active Directory.

Artículos relacionados