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.
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
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).
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 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
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 *
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
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: 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
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
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
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
Artículos Interesantes
Relacionados:
Contenido