Get-ADUser: Obtener información de los usuarios de Active Directory a través de PowerShell

Get-ADUser es uno de los cmdlets básicos de PowerShell que se puede usar para obtener información sobre los usuarios del dominio de Active Directory y sus propiedades. Puede usar Get-ADUser para ver el valor de cualquier atributo de objeto de usuario de AD, mostrar una lista de usuarios en el dominio con los atributos necesarios y exportarlos a CSV, y usar varios criterios y filtros para seleccionar usuarios de dominio.

El cmdlet Get-ADUser ha estado disponible desde PowerShell 2.0 y es parte del módulo especial Active Directory para Windows PowerShell (introducido en Windows Server 2008 R2). Los cmdlets RSAT-AD-PowerShell le permiten realizar varias operaciones en objetos 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 de AD guardadas), scripts vbs, dsquery, etc. Todas estas herramientas se pueden reemplazar fácilmente con el cmdlet Get-ADUser.

En este ejemplo, mostraremos cómo obtener información sobre la última vez que se cambió la contraseña del usuario y la fecha de vencimiento de la contraseña mediante el cmdlet Get-ADUser de PowerShell.

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

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

Import-Module activedirectory

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

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

instalar RSAT-AD-PowerShell en Windows Server

En la versión de escritorio de Windows 10, para usar el cmdlet Get-ADUser, debe instalar la versión adecuada de RSAT y habilitar AMódulo de directorio activo para Windows PowerShell función a través del Panel de control (Programas -> Activar o desactivar las funciones de Windows -> Herramientas de administración de servidor remoto -> Herramientas de administración de funciones -> Herramientas de AD DS y AD LDS -> Herramientas de AD DS).

Módulo de Active Directory para Windows PowerShell en Windows 10

Puede instalar el módulo RSAT AD en Windows 10 1809 y versiones posteriores desde PowerShell:

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

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 PoSh:

Import-Module "C:PSADMicrosoft.ActiveDirectory.Management.dll"
Import-Module "C:PSADMicrosoft.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

Para usar el cmdlet Get-ADUser, no es necesario ejecutarlo con 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 los objetos de AD (excepto los confidenciales, consulte el ejemplo en el artículo LAPS). Si necesita ejecutar el comando Get-ADUser desde una cuenta diferente, use el Credencial parámetro.

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

Get-ADUser -filter *

Importante. No se recomienda ejecutar este comando en los dominios con una gran cantidad de cuentas, ya que el controlador de dominio que proporciona la información puede estar sobrecargado.

Para ejecutar una consulta de AD en un controlador de dominio específico, use el -Servidor parámetro:

Get-ADUser –Server DC01.woshub.com –Identity tuser

Get-ADUser -filter * - gelifica a todos los usuarios en el dominio

Para cambiar los atributos del usuario, utilice el Set-ADUser cmdlet.

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

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

Get-ADUser -identity tuser -properties *

get-aduser enumera todas las propiedades del objeto de usuario

El cmdlet Get-ADUser con el Propiedades * El parámetro mostraba una lista de todos los atributos de usuario de AD y sus valores.

Luego pasaremos al formato de la salida Get-ADUser para que se muestren los atributos de usuario necesarios. Puede mostrar varios atributos de usuario a la vez:

  • La contraseña expiró
  • ContraseñaÚltimo
  • La contraseña nunca expira
  • LastLogonTimestamp

Ejecute el comando:

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

get-aduser - propiedades PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp

Ahora, en los datos del usuario está la información sobre el estado 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). Para mostrar esta información en una vista de tabla más conveniente y eliminar todos los atributos innecesarios, utilice el Seleccionar-Objeto – Propiedad o Tabla de formato:

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

Get-ADUser obtiene información de contraseña para todos los usuarios con format-table

Get-ADUser: Búsqueda de varias unidades organizativas con SearchBase

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

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

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

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

¿Cómo obtener correos electrónicos de Active Directory 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 Dirección de correo electrónico campo a las propiedades del cmdlet Get-ADUser.

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

Get-ADUser EmailAddress

La lista de cuentas de usuario activas 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 permite exportar la libreta de direcciones de correo electrónico de la empresa desde el AD a un archivo CSV, que luego se puede importar a clientes de correo electrónico 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:tempadress_list.csv

Get-ADUser: exportar usuarios de AD a CSV / TXT

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:tempusers.txt

O puede exportar la lista de usuarios de AD a un archivo CSV (que luego se importará convenientemente a Excel):

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

Uso de Get-ADUser con elementos de filtro

Utilizando la -Filtrar parámetro, puede filtrar la lista de cuentas de usuario por uno o más atributos. Como argumentos de este parámetro, puede especificar el valor de ciertos atributos de los usuarios de Active Directory. Si usa el parámetro –Filter, el cmdlet Get-ADUser solo enumerará los usuarios que coincidan con los criterios del filtro.

Por ejemplo, quiero enumerar las cuentas de usuario activas (habilitadas) cuyo nombre contenga «Dmitry”(En el ejemplo siguiente, se utilizan varios filtros; puede combinar condiciones utilizando los operadores de comparación lógicos estándar de PowerShell):

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

Get-AdUser con filtro

Además, puede ordenar la lista de usuarios resultante por un atributo de usuario específico (columna) con el Ordenar-Objeto cmdlet. También puede utilizar el Objeto donde cmdlet para especificar varios criterios de filtrado a la vez.

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

Get-ADUser: filtrado con Where-Object y Sort-Object

Por lo tanto, puede crear una tabla con los atributos necesarios de los usuarios de Active Directory.

Ejemplos de uso de Get-ADUser

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

Mostrar usuarios de 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

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

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

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

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

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 OU que son miembros de un grupo de seguridad de dominio específico:

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

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

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

Para obtener una computadora o realizar una búsqueda de varias computadoras desde Active Directory, puede usar otro cmdlet: Get-ADComputer.

 

Artículos Interesantes