Búsqueda de sitios web

Exportar miembros del grupo AD con PowerShell


A veces desea exportar los miembros del grupo de Active Directory a un archivo CSV. Por ejemplo, debe exportar todos los miembros del grupo AD, solo una unidad organizativa particular o varios grupos. En este artículo, aprenderá cómo exportar la membresía del grupo AD a un archivo CSV con PowerShell.

Introducción

El script de PowerShell Export-ADGroupMembers.ps1 se ejecutará con el nombre distinguido que haya configurado. Después de eso, exportará los grupos AD, incluidos los miembros, a un archivo CSV. Puede abrir el archivo CSV con Microsoft Excel o cualquier otra aplicación que admita la extensión de archivo CSV.

El script exportará la siguiente información:

  1. Nombre

  2. Categoría

  3. Alcance

  4. Miembros

Nota: El script de PowerShell Export-ADGroupMembers.ps1 obtiene los miembros de un grupo de Active Directory. Los miembros pueden ser usuarios, grupos y computadoras.

Exportar script de PowerShell de miembros del grupo de Active Directory

Antes de comenzar, desea colocar los archivos en el lugar correcto. Recomendamos crear dos carpetas con el nombre Scripts y Temp en la unidad (C:) del Management Server o Controlador de Dominio.

Descargue y coloque el script de PowerShell Export-ADGroupMembers.ps1 en la carpeta C:\Scripts.

Asegúrese de que el archivo esté desbloqueado para evitar errores al ejecutar el script. Lea más en el artículo Error sin firma digital al ejecutar el script de PowerShell.

Otra opción es copiar y pegar el siguiente código en el Bloc de notas. Asígnele el nombre Export-ADGroupMembers.ps1 y colóquelo en la carpeta C:\scripts.

<#
    .SYNOPSIS
    Export-ADGroupMembers.ps1

    .DESCRIPTION
    Export Active Directory group members to CSV file.

    .LINK
    www.alitajran.com/export-ad-group-members-powershell

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 03/22/2022 - Initial version
    V2.00, 03/25/2023 - Added extract contacts and groups + optimization for faster results
#>

# Get year and month for CSV export file
$DateTime = Get-Date -f "yyyyMMddhhmm"

# Set CSV file name
$CSVFile = "C:\temp\ADGroups_" + $DateTime + ".csv"

# Set distinguishedName as searchbase, you can use one DN or multiple DNs
# Or use the root domain like DC=exoip,DC=local
$DNs = @(
    "DC=exoip,DC=local"
)

# Create empty array for CSV data
$CSVOutput = @()

# Create empty array for AD groups
$ADGroups = @()

# Loop through DNs
foreach ($DN in $DNs) {

    # Add every DN to AD groups
    $ADGroups += Get-ADGroup -Filter * -SearchBase $DN
}

# Set progress bar variables
$i = 0
$tot = $ADGroups.count

foreach ($ADGroup in $ADGroups) {

    # Set up progress bar
    $i++
    $status = "{0:N0}" -f ($i / $tot * 100)
    Write-Progress -Activity "Exporting AD Groups" -status "Processing Group $i of $tot : $status% Completed" -PercentComplete ($i / $tot * 100)

    # Ensure Members variable is empty
    $Members = ""

    # Get group members which are also groups and add to string
    $MembersArr = (Get-ADGroup -filter { Name -eq $ADGroup.Name } -Properties Members ).Members | Get-ADObject | select Name, objectClass, distinguishedName
    if ($MembersArr) {
        foreach ($Member in $MembersArr) {
            $MemDN = $Member.distinguishedName
            $UserObj = Get-ADUser -filter { DistinguishedName -eq $MemDN }
            if ($UserObj.Enabled -eq $False) {
                continue
            }
            if ($Member.objectClass -eq "user") {
                $Members = $Members + ",U-" + $Member.Name
            }
            elseif ($Member.objectClass -eq "contact") {
                $Members = $Members + ",C-" + $Member.Name
            }
            else {
                $Members = $Members + ",G-" + $Member.Name
            }
        }
        # Check for members to avoid error for empty groups
        if ($Members) {
            $Members = $Members.Substring(1, ($Members.Length) - 1)
        }
    }

    # Set up hash table and add values
    $HashTab = $null
    $HashTab = [ordered]@{
        "Name"     = $ADGroup.Name
        "Category" = $ADGroup.GroupCategory
        "Scope"    = $ADGroup.GroupScope
        "Members"  = $Members
    }

    # Add hash table to CSV data array
    $CSVOutput += New-Object PSObject -Property $HashTab
}

# Export report to CSV file
$CSVOutput | Sort-Object Name | Export-Csv -Encoding UTF8 -Path $CSVFile -NoTypeInformation #-Delimiter ";"
  • Línea 30: Edite el nombre distinguido de destino. Puede tener un DN o varios DN (más sobre esto a continuación con diferentes ejemplos).

Obtener nombre distinguido

Debe agregar el valor del nombre completo en el script de PowerShell. Siga los pasos a continuación para obtener el nombre distinguido en Active Directory:

  1. Iniciar Usuarios y equipos de Active Directory

  2. Haga clic derecho en el destino y haga clic en Propiedades

  3. Vaya a la pestaña Editor de atributos

  4. Busque el atributo distuingedName en la lista de atributos

  5. Haga doble clic para abrir la cadena y copie el valor

Nota: Si no ve la pestaña Editor de atributos, haga clic en Usuarios y equipos de Active Directory en la barra de menú en Ver y habilite < fuerte>Funciones avanzadas.

Exportar miembros del grupo AD a CSV

Ejecute PowerShell como administrador. Cambie la ruta a la carpeta de scripts. Ejecute el script de PowerShell para exportar los miembros del grupo AD a un archivo CSV. Espere hasta que se complete.

PS C:\> cd c:\scripts
PS C:\scripts> .\Export-ADGroupMembers.ps1

Vaya a la carpeta de scripts y verifique que ve el archivo ADGroups_. Abra el archivo CSV con su aplicación favorita. En nuestro ejemplo, es Microsoft Excel.

Exportar miembros del grupo AD en OU

Obtenga el nombre distinguido de la unidad organizativa y cambie la línea 30. En nuestro ejemplo, son los Grupos de OU.

"OU=Groups,OU=Company,DC=exoip,DC=local"

Exportar miembros del grupo AD en múltiples unidades organizativas

Obtenga el nombre distinguido de las unidades organizativas y cambie la línea 30. En nuestro ejemplo. son las unidades organizativas Grupos1 y Grupos2.

"OU=Groups1,OU=Company,DC=exoip,DC=local",
"OU=Groups2,OU=Company,DC=exoip,DC=local"

Exportar miembros del grupo AD en un grupo particular

Obtenga el nombre distinguido del grupo y cambie la línea 30. En nuestro ejemplo, es el grupo Pilot.

"CN=Pilot,OU=Groups,OU=Company,DC=exoip,DC=local"

Exportar miembros del grupo AD en varios grupos

Obtenga el nombre distinguido del grupo y cambie la línea 30. En nuestro ejemplo, son los grupos Pilot y HR.

"CN=Pilot,OU=Groups,OU=Company,DC=exoip,DC=local",
"CN=HR,OU=Groups,OU=Company,DC=exoip,DC=local"

¿Te ayudó esto a exportar la membresía del grupo AD a CSV?

Leer más: Copie miembros de un grupo AD a otro »

Conclusión

Aprendió a exportar miembros del grupo AD a CSV con PowerShell. Hay muchos grupos en cada organización y es excelente exportarlos a un archivo CSV. Con el script de PowerShell, puede seleccionar qué grupos de Active Directory desea exportar.

Disfrutaste este artículo? También te puede interesar Exportar miembros del grupo de distribución a CSV con PowerShell. No olvides seguirnos y compartir este artículo.

Artículos relacionados