Publicado en

Exportar usuarios de Active Directory a CSV con PowerShell (por OU o todo el dominio)

Exportar usuarios de Active Directory a CSV con PowerShell (por OU o todo el dominio)

Guía práctica para generar reportes de usuarios desde Active Directory y exportarlos a CSV con PowerShell. Incluye filtro por OU, columnas útiles y ejemplos listos.

Cuando administras Active Directory, es común necesitar un reporte actualizado de usuarios para auditorías, inventarios de cuentas o verificación de actividad. Con este script de PowerShell podrás exportar usuarios a un archivo CSV de forma rápida, ya sea de una OU específica o de todo el dominio, con campos clave como correo, samAccountName, estado, fechas y más.

Requisitos

  • Equipo unido al dominio con acceso al controlador de dominio.
  • RSAT instaladas (incluye el módulo ActiveDirectory para PowerShell).
  • PowerShell iniciado como Administrador.
  • Permisos para leer objetos de AD en las OUs requeridas.

Script completo

Este script exporta usuarios desde AD a un archivo CSV, respetando el separador regional (-UseCulture) y asegurando la carpeta de salida. Permite filtrar por una OU concreta o abarcar todo el dominio.

param(
  [string]$Ruta = "C:\Temp\Usuarios_AD_$((Get-Date).ToString('dd_MM_yyyy_HHmm')).csv",
  [string]$OU = "OU=Users,OU=MX,DC=contoso,DC=local"  # Deja vacío para todo el dominio. Ej: "OU=Users,OU=MX,DC=contoso,DC=local"
)

Import-Module ActiveDirectory

# Asegura carpeta
$carpeta = Split-Path $Ruta -Parent
if (-not (Test-Path $carpeta)) { New-Item -ItemType Directory -Path $carpeta | Out-Null }

$props = @('mail','displayName','samAccountName',
           'enabled','whenCreated','passwordLastSet','lastLogonDate','department','title','DistinguishedName')

$baseCmd = @{
  Filter     = '*'
  Properties = $props
}

if ($OU) {
  $baseCmd.SearchBase  = $OU
  $baseCmd.SearchScope = 'Subtree'
}

Get-ADUser @baseCmd |
  Select-Object displayName,samAccountName,mail,enabled,
                whenCreated,passwordLastSet,lastLogonDate,department,title,DistinguishedName |
  Export-Csv $Ruta -NoTypeInformation -Encoding UTF8 -UseCulture

Write-Host "Exportado a: $Ruta"

Parámetros y columnas

  • $Ruta: ruta del CSV de salida. Incluye fecha y hora por defecto para evitar sobrescribir.
  • $OU: DN de la unidad organizativa base (ej. OU=Users,OU=MX,DC=contoso,DC=local). Si lo dejas vacío, recorre todo el dominio.

Columnas exportadas: displayName, samAccountName, mail, enabled, whenCreated, passwordLastSet, lastLogonDate, department, title, DistinguishedName.

Cómo usarlo (ejemplos rápidos)

1) Exportar todo el dominio

.\Exportar-Usuarios-AD.ps1 -OU ""

2) Exportar solo una OU específica

.\Exportar-Usuarios-AD.ps1 -OU "OU=Users,OU=MX,DC=contoso,DC=local"

3) Cambiar carpeta de salida

.\Exportar-Usuarios-AD.ps1 -Ruta "C:\Temp\Usuarios_AD_$(Get-Date -Format yyyyMMdd_HHmm).csv" -OU ""

Variaciones útiles

Filtrar solo usuarios habilitados

Get-ADUser @baseCmd | Where-Object {$_.Enabled -eq $true} | Select-Object ... | Export-Csv ...

Agregar más propiedades (teléfono, ciudad, manager)

$props += 'telephoneNumber','city','manager'

Dominios grandes (paginación y velocidad)

  • Agrega -ResultSetSize $null a Get-ADUser para no limitar resultados.
  • Especifica un DC: Get-ADUser @baseCmd -Server DC01.contoso.local.

Solución de problemas

  • Import-Module ActiveDirectory falla: instala RSAT en Windows 10/11 (Características opcionales) o agrega la característica en Windows Server.
  • Access denied: verifica que tu usuario tenga permisos de lectura en las OUs objetivo.
  • CSV con separador incorrecto: el script usa -UseCulture para respetar tu configuración regional. Si prefieres coma, elimina -UseCulture y agrega -Delimiter ",".

Nota de seguridad y privacidad

El CSV puede contener información sensible (nombres, correos, cargos). Almacénalo en un repositorio seguro con los permisos adecuados y define un tiempo de retención.

Conclusión

Con este script tienes un reporte de usuarios de Active Directory confiable y repetible. Puedes adaptarlo con más columnas, filtros y programación para tus necesidades de auditoría y administración.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tiempo excedido. Por favor completa el captcha nuevamente

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.