ADUser – Cómo encontrar y exportar usuarios de AD con PowerShell

Active Directory es nuestra fuente principal cuando se trata de administrar cuentas de usuario.

La consola de administración es excelente para buscar un solo usuario, pero cuando necesitamos más, el cmdlet Get-ADUser en PowerShell es mucho más poderoso.

Nos permite obtener rápidamente una selección de usuarios u obtener detalles de uno o varios usuarios.

También es una excelente manera de exportar las cuentas o la información de los usuarios a un archivo CSV.

En este artículo, vamos a echar un vistazo al cmdlet get aduser en PowerShell.

Además, le daré algunos ejemplos útiles cuando se trata de buscar y exportar usuarios de anuncios. Y como beneficio adicional, si ha agregado un guion completo para exportar sus usuarios de AD.

Instalar el módulo de directorio activo

Para poder usar el cmdlet Get-ADuser en PowerShell, deberá tener instalado el módulo de Active Directory.

De forma predeterminada, está instalado en el controlador de dominio, pero en Windows 10 u 11 deberá instalarlo.

Puede ejecutar el siguiente comando de PowerShell en Windows 10 u 11 para instalar el módulo:

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

Búsqueda de usuarios con Obtener ADUser en PowerShell

El cmdlet Get-ADUser nos permite encontrar cuentas de usuario en Active Directory y extraer información de ellas.

El verdadero poder de este cmdlet es que viene con diferentes opciones para encontrar esas cuentas de usuario.

Tenemos las siguientes opciones a la hora de encontrar cuentas:

  • Identidad – Encuentra una cuenta de usuario basada en su identidad. Esto devolverá una sola cuenta de usuario
  • Filtrar – Recuperar múltiples objetos (cuentas de usuario) en base a una consulta
  • Filtro LDAP – Utilice una cadena de consulta LDAP para filtrar las cuentas de usuario.
  • Base de búsqueda – Especifique la ruta de Active Directory (OU) para buscar en
  • Ámbito de búsqueda – Especifique qué tan profundo desea buscar (nivel base, un nivel o subárbol completo)

El parámetro de identidad se usa principalmente cuando conoce el nombre del usuario. SAMAccountName (nombre de inicio de sesión). Esto le permite seleccionar un solo usuario de Active Directory y ver las propiedades de la cuenta.

Get-ADUser -identity arhodes
cmdlet get-aduser
Obtener ADUser

Como puede ver, se devuelven algunas propiedades básicas del usuario. Podemos usar el parámetro -properties para recuperar más información del usuario.

Más adelante explicaré más sobre cómo recuperar diferentes propiedades, pero si desea ver toda la información posible de una cuenta de usuario, use el siguiente comando:

Get-ADUser -identity arhodes -Propeties *

Usando el filtro

Una forma más común de encontrar usuarios en Active Directory es usar el -filter parámetro. El parámetro de filtro usa el lenguaje de expresión de PowerShell para filtrar el resultado. Esto significa que podemos usar los siguientes operadores en nuestras consultas:

Operador Descripción
-eq igual
-le Menos que o igual a
-ge Grande que o igual a
-nordeste No igual a
-lt Menos que
-gt mayor entonces
-me gusta Me gusta
-no como No como
-y -o y/o
-no No
Operadores de lenguaje de expresión de PowerShell

Así que echemos un vistazo a un par de ejemplos de uso común al filtrar usuarios de Active Directory.

Para buscar un usuario por su nombre o apellido podemos utilizar el siguiente filtro

# Search on first name
Get-ADUser -Filter "GivenName -eq 'Alan'"

# Search on last name:
Get-ADUser -Filter "Surname -eq 'Rhodes'"

Otra opción es usar el operador like en combinación con un comodín. Esto es particularmente útil cuando conoce una parte del nombre. Nota la * símbolo que indica el comodín.

Get-ADUser -Filter "name -like '*rho*'"

los -ge y -le se puede usar, por ejemplo, para encontrar a todos los usuarios en función de sus intentos fallidos de inicio de sesión:

# Find all users that have more then 3 failed login attempts
Get-ADUser -Filter "badpwdcount -ge 3"

Para encontrar todos los usuarios que tienen un campo en particular sin llenar, podemos usar el -notlike operador.

Por ejemplo, queremos recuperar todos los usuarios que no tienen el campo de dirección de correo electrónico completado.

Utilizando el -notlike filtro en combinación con un comodín podemos buscar todos los usuarios que no tienen ningún dato en el campo de correo electrónico.

Get-ADUser -Filter "Email -notlike '*'" | ft

Puedes combinar esto fácilmente con el Set-ADUser cmdlet, para actualizar muchos usuarios con un solo comando.

Por ejemplo, obtenemos todos los usuarios que no tienen el atributo de página web completo y lo configuramos en el sitio web de la empresa:

Get-ADUser -Filter "homepage -notlike '*'" | Set-ADUser -HomePage "lazyadmin.nl"

Combinar filtros

También podemos expandir nuestra consulta de filtro con múltiples expresiones. Esto le permite reducir aún más sus consultas de filtro.

Por ejemplo, queremos encontrar todos los empleados que son «administrador de cuenta».

Si usáramos el siguiente filtro, devolvería todos los usuarios con el cargo de administrador de cuentas:

Get-ADUser -Filter "title -eq 'account manager'" | Select Name,Enabled | ft

Pero el problema es que esto también incluye cuentas que están deshabilitadas. Solo queremos usuarios activos, no nos interesan los usuarios que ya se fueron de la empresa. Así lo que podemos hacer es también filtrar por cuentas que estén habilitadas:

Get-ADUser -Filter "title -eq 'account manager' -and enabled -like 'true'" | Select Name,Enabled | ft
obtener un usuario
Get-ADUsers con filtros

El último ejemplo de filtro que quiero compartir con ustedes es obtener usuarios según un campo de fecha. Digamos que queremos encontrar todas las cuentas inactivas.

Para ello, podemos utilizar el lastlogon campo en Active Directory. Primero necesitamos crear una variable de fecha, tomando la fecha de hoy y restándole 30 días.

Entonces podemos obtener todos los usuarios que no han iniciado sesión en los últimos 30 días en el dominio:

$date = (Get-Date) - (New-TimeSpan -Days 30)
Get-ADUser -Filter 'lastLogon -lt $date' | ft

Obtener base de búsqueda de usuarios de ADU

Cuando tiene muchos usuarios en Active Directory, probablemente desee reducir la búsqueda.

Para hacer esto, podemos usar el parámetro -SearchBase para el cmdlet Get-ADUser.

Esto nos permite especificar el distinguishedName (nivel OU) donde queremos buscar.

Para especificar la unidad organizativa donde queremos buscar, debemos escribir el nombre distinguido de abajo hacia arriba.

Por lo tanto, la cadena comienza con la unidad organizativa en la que desea buscar y termina con el nombre de dominio.

Tome la siguiente estructura de Active Directory, queremos obtener todos los usuarios de la unidad organizativa de TI:

Ruta de la base de búsqueda

los SearchBase cadena, en este caso, sería:

1: IT
2: Amsterdam
3: Sites
4: Lazyadmin
5: NL

"OU=IT,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL"

Por lo tanto, para obtener todos los usuarios del departamento de TI en Amsterdam, podemos usar el siguiente comando de PowerShell:

Get-ADUser -Filter * -SearchBase "OU=IT,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" | ft

Uso de SearchScope

Por defecto, el -SearchBase El parámetro devolverá todos los usuarios de la unidad organizativa especificada y las unidades organizativas anidadas.

Con el -SearchScope parámetro, podemos especificar qué tan profundo o no queremos buscar a través del árbol de Active Directory.

Digamos que queremos los usuarios de la unidad organizativa Amsterdam, pero no de las unidades organizativas anidadas.

Directorio Activo

Si usáramos la siguiente base de búsqueda, se devolverían todos los usuarios, incluidos los de las unidades organizativas de TI, marketing y producción:

Get-ADUser -Filter * -SearchBase "OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" | ft

Para obtener solo los usuarios de Amsterdam OU, podemos usar el parámetro SearchScope. Esto nos permite limitar la base de búsqueda solo al nivel actual:

Get-ADUser -Filter * -SearchBase "OU=IT,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" -SearchScope OneLevel | ft
obtener la base de búsqueda de usuarios de anuncios
Especifique SearchScope para obtener ADUsers

Obtener propiedades de ADUser

Al usar el cmdlet Get ADUser, es posible que haya notado que solo devolverá un par de propiedades de la cuenta de usuario. Pero como probablemente sepa, la cuenta de usuario tiene muchas más propiedades.

Para devolver todas las propiedades, debemos agregar el parámetro -properties al cmdlet:

Get-ADUser -identity arhodes -properties *

Esto devolverá una larga lista con todas las posibles propiedades de una cuenta de usuario.

Ahora, esta es probablemente demasiada información, por lo que es posible que desee especificar los campos reales que necesita.

Para hacer esto, deberá canalizar el comando de selección detrás de él, donde especificamos los campos que necesitamos.

También es una buena idea especificar los mismos campos en el parámetro de propiedades, en lugar de solicitar todos los datos.

Por ejemplo, si desea el nombre completo, el cargo y la dirección de correo electrónico, puede usar el siguiente comando:

Get-ADUser -identity arhodes -properties emailaddress,title | select name,emailaddress,title

Selección de valores distintos

El siguiente consejo no está realmente relacionado con el cmdlet Get ADUser, pero es algo que uso a menudo en combinación con la obtención de información de usuario de Active Directory.

Cuando desee exportar una lista de todos los títulos de trabajo posibles en su Active Directory, puede usar el parámetro -Unique en PowerShell.

Get-ADUser -Filter * -Properties title | Select title -Unique

Este comando le dará todos los títulos de trabajo que ha utilizado en su Active Directory.

Exportar usuarios de AD a CSV con PowerShell

La exportación de resultados en PowerShell a CSV es bastante común.

Todos usamos PowerShell a menudo para recuperar información solo para procesarla más en Excel.

He escrito una guía completa sobre el cmdlet Export-CSV, pero también quiero darle un par de ejemplos útiles cuando trabaje con el cmdlet Get-ADUser.

Para exportar simplemente todos los usuarios de AD, podemos usar el siguiente comando:

Get-ADUser -filter * | Export-CSV c:\temp\users.csv -NoTypeInformation

Pero como notará, esto no le dará realmente los resultados que está buscando. Incluirá todas las cuentas de usuario, habilitadas y deshabilitadas, y no realmente la información que necesitamos.

Exportar campos adicionales

Así que el primer paso es especificar los campos que realmente queremos exportar.

Por ejemplo, si queremos exportar los nombres, cargos, departamentos y direcciones de correo electrónico, podemos usar el siguiente comando:

Get-ADUser -filter * -properties mail,title,department | select name,title,department,mail | Export-CSV c:\temp\users.csv -NoTypeInformation

Exportar solo usuarios habilitados

Para exportar solo los usuarios activos (habilitados) del AD a un archivo CSV, podemos usar el siguiente comando en PowerShell:

# Export all enabled users
Get-ADUser -Filter "Enabled -like 'true'" | Export-CSV c:\temp\users.csv -NoTypeInformation

# OR Export only disabled users
Get-ADUser -Filter "Enabled -like 'False'" | Export-CSV c:\temp\users.csv -NoTypeInformation

Complete la exportación de usuarios de AD a la secuencia de comandos CSV

Creé un script de PowerShell que exportará todos los usuarios de AD a CSV con las propiedades que se necesitan con más frecuencia.

Cuando ejecuta el script, especifica un par de opciones:

  • Obtener el nombre para mostrar del administrador o no (verdadero por defecto)
  • Especificar la base de búsqueda (OU), Active Directory completo predeterminado
  • Obtenga cuentas habilitadas o deshabilitadas o ambas (solo habilitado por defecto)
  • Exportar archivo CSV de ruta (ubicación de la secuencia de comandos predeterminada)

El script obtendrá todas las cuentas de usuario del directorio activo si no especifica la base de búsqueda (OU). También es posible especificar varias unidades organizativas:

.\Get-ADusers.ps1 -searchBase "OU=users,OU=Amsterdam,DC=LazyAdmin,DC=Local","OU=users,OU=Oslo,DC=LazyAdmin,DC=Local" -path c:\temp\users.csv

Siga estos pasos para exportar los usuarios de AD con el script de PowerShell:

  1. Descargar el script completo Exportar usuarios de AD de
  2. Abrir PowerShell y navegue hasta el script
  3. Ejecute el script de exportación: Get-ADUsers.ps1 -csvpath c:\temp\adusers.csv

Cuando se complete, la secuencia de comandos abrirá automáticamente Excel para usted.

También puede ejecutar el script sin el parámetro csvpath para enviar el resultado a la consola.

param(
  [Parameter(
    Mandatory = $false,
    HelpMessage = "Get the users manager"
  )]
  [switch]$getManager = $true,

  [Parameter(
    Mandatory = $false,
    HelpMessage = "Enter the searchbase between quotes or multiple separated with a comma"
    )]
  [string[]]$searchBase,

  [Parameter(
    Mandatory = $false,
    HelpMessage = "Get accounts that are enabled, disabled or both"
  )]
    [ValidateSet("true", "false", "both")]
  [string]$enabled = "true",

  [Parameter(
    Mandatory = $false,
    HelpMessage = "Enter path to save the CSV file"
  )]
  [string]$CSVpath
)

Function Get-Users {
    <#
    .SYNOPSIS
      Get users from the requested DN
    #>
    param(
      [Parameter(
        Mandatory = $true
      )]
      $dn
    )
    process{
      # Set the properties to retrieve
      $properties = @(
        'name',
        'userprincipalname',
        'mail',
        'title',
        'enabled',
        'manager',
        'department',
        'telephoneNumber',
        'office',
        'mobile',
        'streetAddress',
        'city',
        'postalcode',
        'state',
        'country',
        'description',
        'lastlogondate'
      )

      # Get enabled, disabled or both users
      switch ($enabled)
      {
        "true" {$filter = "enabled -eq 'true'"}
        "false" {$filter = "enabled -eq 'false'"}
        "both" {$filter = "*"}
      }

      # Get the users
      Get-ADUser -Filter $filter -Properties $properties -SearchBase $dn | select $properties
    }
}


Function Get-AllADUsers {
  <#
    .SYNOPSIS
      Get all AD users
  #>
  process {
    Write-Host "Collecting users" -ForegroundColor Cyan
    $users = @()

    if ($searchBase) {
     # Get the requested mailboxes
      foreach ($dn in $searchBase) {
        Write-Host "- Get users in $dn" -ForegroundColor Cyan
        $users += Get-Users -dn $dn
      }
    }else{
      # Get distinguishedName of the domain
      $dn = Get-ADDomain | Select -ExpandProperty DistinguishedName
      Write-Host "- Get users in $dn" -ForegroundColor Cyan
      $users += Get-Users -dn $dn
    }

    $users | ForEach {

      $manager = ""

      If (($getManager.IsPresent) -and ($_.manager)) {
        # Get the users' manager
        $manager = Get-ADUser -Identity $_.manager | Select -ExpandProperty Name
      }

      [pscustomobject]@{
        "Name" = $_.Name
        "UserPrincipalName" = $_.UserPrincipalName
        "Emailaddress" = $_.mail
        "Job title" = $_.Title
        "Manager" = $manager
        "Department" = $_.Department
        "Office" = $_.Office
        "Phone" = $_.telephoneNumber
        "Mobile" = $_.mobile
        "Enabled" = $_.enabled
        "Street" = $_.StreetAddress
        "City" = $_.City
        "Postal code" = $_.PostalCode
        "State" = $_.State
        "Country" = $_.Country
        "Description" = $_.Description
        "Last login" = $_.lastlogondate
      }
    }
  }
}

If ($CSVpath) {
  # Get mailbox status
  Get-AllADUsers | Sort-Object Name | Export-CSV -Path $CSVpath -NoTypeInformation -Encoding UTF8
  if ((Get-Item $CSVpath).Length -gt 0) {
      Write-Host "Report finished and saved in $CSVpath" -ForegroundColor Green

      # Open the CSV file
      Invoke-Item $path
  } 
  else {
      Write-Host "Failed to create report" -ForegroundColor Red
  }
}
Else {
  Get-AllADUsers | Sort-Object Name 
}

Terminando

El cmdlet Get ADUser es realmente útil cuando se trata de extraer información de Active Directory.

El uso de los diferentes filtros le permite recuperar solo la información que realmente necesita.

Para exportar los usuarios de AD a CSV, puede probar el script. Puede cambiar fácilmente las propiedades que recupera según sus propias necesidades.

Si tiene alguna pregunta, simplemente deje un comentario a continuación.

Otros artículos relacionados

Cómo descargar un archivo con PowerShell

Cómo descargar un archivo con PowerShell

PowerShell es un excelente lenguaje de secuencias de comandos para escribir todo tipo de secuencias de comandos. Pero, ¿sabía que ...
Leer Más
Buzón: cambie la configuración del buzón con PowerShell

Buzón: cambie la configuración del buzón con PowerShell

El cmdlet Set-Mailbox en PowerShell nos permite cambiar la configuración del buzón en Exchange Server y Exchange Online. Podemos usar ...
Leer Más
Cómo instalar el módulo Microsoft Graph en PowerShell

Cómo instalar el módulo Microsoft Graph en PowerShell

La API de Microsoft Graph nos permite interactuar con todos los servicios de Microsoft a través de una única fuente ...
Leer Más
Cómo usar Substring en PowerShell

Cómo usar Substring en PowerShell

Cuando desee extraer una parte de una cadena en PowerShell, podemos usar el método Substring(). Este método nos permite especificar ...
Leer Más
ADGroupMember: obtenga todos los usuarios en ADGroup con PowerShell

ADGroupMember: obtenga todos los usuarios en ADGroup con PowerShell

Los grupos de Active Directory le permiten asignar fácilmente permisos o software a sus usuarios. Pero, ¿cómo se obtienen todos ...
Leer Más
Cómo agregar un usuario a un grupo en PowerShell con Add-ADGroupMember

Cómo agregar un usuario a un grupo en PowerShell con Add-ADGroupMember

Cuando necesite agregar varios usuarios a un grupo de Active Directory, usar PowerShell es realmente su mejor opción. En lugar ...
Leer Más

Deja un comentario