Este comando utiliza el filtro userAccountControl:1.2.840.113556.1.4.803:=512 para seleccionar sólo los usuarios que tienen el bit 512 establecido en su atributo userAccountControl. Este bit indica que el usuario está activo en el directorio activo.

csvde -f C:\Users_Activos.csv -r "(&(objectCategory=person)(userAccountControl:1.2.840.113556.1.4.803:=512))" -l "displayName,memberOf"



------NUEVA VERSION 2026-----

# Importar módulo de AD

Import-Module ActiveDirectory


# Ruta de salida (puedes cambiarla si prefieres)

$Output = "C:\Usuarios_Grupos_Detalle.csv"


# Obtener todos los usuarios habilitados

$Usuarios = Get-ADUser -Filter 'Enabled -eq $true' -Properties Name, SamAccountName, MemberOf, PrimaryGroup


$Resultado = New-Object System.Collections.Generic.List[PSCustomObject]


foreach ($User in $Usuarios) {

    # Formatear el login (Sergio_Abarca)

    $UserLogin = $User.SamAccountName -replace ' ', '_'

    $UserEmail = "$UserLogin@volioytrejos.com"

    

    # 1. Obtener los grupos de la lista "Member Of"

    # Convertimos los DistinguishedNames en nombres simples de grupo

    $ListaGrupos = @()

    if ($User.MemberOf) {

        foreach ($GroupDN in $User.MemberOf) {

            $GroupName = (Get-ADGroup $GroupDN).Name

            $ListaGrupos += $GroupName

        }

    }


    # 2. Agregar el "Primary Group" (usualmente Usuarios del dominio) 

    # ya que a veces no sale en la lista MemberOf pero sí en la pestaña.

    if ($User.PrimaryGroup) {

        $PrimaryGroupName = (Get-ADGroup $User.PrimaryGroup).Name

        if ($ListaGrupos -notcontains $PrimaryGroupName) {

            $ListaGrupos += $PrimaryGroupName

        }

    }


    # 3. Crear una fila por cada grupo encontrado

    foreach ($Grupo in $ListaGrupos) {

        $Object = [PSCustomObject]@{

            Grupo   = $Grupo

            Usuario = $UserLogin

            Nombre  = $User.Name

            Correo  = $UserEmail

            Estado  = "Activo"

        }

        $Resultado.Add($Object)

    }

}


# Exportar al formato CSV para Excel

$Resultado | Export-Csv -Path $Output -NoTypeInformation -Encoding UTF8 -Delimiter ","


Write-Host "Extraídos $($Resultado.Count) registros de membresía. Archivo: $Output" -ForegroundColor Green