Exportar usuarios de AD a CSV con PowerShell
Queremos exportar la información de los usuarios de AD a CSV con PowerShell. ¿Por qué necesitamos enumerar los usuarios de AD con PowerShell? Por ejemplo, queremos saber si cada usuario de AD tiene el número de teléfono móvil correcto en Active Directory. Esto se debe a que la mesa de servicio busca la información en Active Directory antes de realizar una llamada. En este artículo, aprenderá cómo exportar usuarios de Active Directory a un archivo CSV con PowerShell.
Script de PowerShell para exportar información de usuarios de AD
El script de PowerShell Export-ADUsers.ps1 se ejecutará con el nombre distinguido que haya configurado. Después de eso, exportará el informe 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 recopilará la siguiente información por usuario:
Nombre de pila
Apellido
-
Nombre para mostrar
Nombre de inicio de sesión del usuario
Nombre principal de usuario
Calle
Ciudad
Provincia del estado
Código Postal/Código Postal
País/región
Título profesional
Departamento
-
Compañía
Gerente
UNED
Descripción
Oficina
Número de teléfono
Otro teléfono
Correo electrónico
Móvil
Buscapersonas
-
Notas
Estado de la cuenta
Fecha de creación del usuario
Fecha del último inicio de sesión
Exportar usuarios de Active Directory a CSV con PowerShell
Sigamos los pasos y exportemos los usuarios de Active Directory a un archivo CSV con PowerShell.
Paso 1: preparar el script de PowerShell para exportar usuarios de AD
Descargue y coloque el script de PowerShell Export-ADUsers.ps1 en la carpeta del controlador de dominio C:\scripts. Si no tiene una carpeta de scripts, cree una.
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ígnale el nombre Export-ADUsers.ps1 y colócalo en la carpeta C:\scripts.
<#
.SYNOPSIS
Export-ADUsers.ps1
.DESCRIPTION
Export Active Directory users to CSV file.
.LINK
alitajran.com/export-ad-users-to-csv-powershell
.NOTES
Written by: ALI TAJRAN
Website: alitajran.com
LinkedIn: linkedin.com/in/alitajran
.CHANGELOG
V1.00, 05/24/2021 - Initial version
V1.10, 04/01/2023 - Added progress bar, user created date, and OU info
V1.20, 05/19/2023 - Added function for OU path extraction
#>
# Split path
$Path = Split-Path -Parent "C:\scripts\*.*"
# Create variable for the date stamp in log file
$LogDate = Get-Date -f yyyyMMddhhmm
# Define CSV and log file location variables
# They have to be on the same location as the script
$Csvfile = $Path + "\AllADUsers_$LogDate.csv"
# Import Active Directory module
Import-Module ActiveDirectory
# Function to extract OU from DistinguishedName
function Get-OUFromDistinguishedName {
param(
[string]$DistinguishedName
)
$ouf = ($DistinguishedName -split ',', 2)[1]
if (-not ($ouf.StartsWith('OU') -or $ouf.StartsWith('CN'))) {
$ou = ($ouf -split ',', 2)[1]
}
else {
$ou = $ouf
}
return $ou
}
# Set distinguishedName as searchbase, you can use one OU or multiple OUs
# Or use the root domain like DC=exoip,DC=local
$DNs = @(
"OU=Sales,OU=Users,OU=Company,DC=exoip,DC=local",
"OU=IT,OU=Users,OU=Company,DC=exoip,DC=local",
"OU=Finance,OU=Users,OU=Company,DC=exoip,DC=local"
)
# Create empty array
$AllADUsers = @()
# Loop through every DN
foreach ($DN in $DNs) {
$Users = Get-ADUser -SearchBase $DN -Filter * -Properties *
# Add users to array
$AllADUsers += $Users
# Display progress bar
$progressCount = 0
for ($i = 0; $i -lt $AllADUsers.Count; $i++) {
Write-Progress `
-Id 0 `
-Activity "Retrieving User " `
-Status "$progressCount of $($AllADUsers.Count)" `
-PercentComplete (($progressCount / $AllADUsers.Count) * 100)
$progressCount++
}
}
# Create list
$AllADUsers | Sort-Object Name | Select-Object `
@{Label = "First name"; Expression = { $_.GivenName } },
@{Label = "Last name"; Expression = { $_.Surname } },
@{Label = "Display name"; Expression = { $_.DisplayName } },
@{Label = "User logon name"; Expression = { $_.SamAccountName } },
@{Label = "User principal name"; Expression = { $_.UserPrincipalName } },
@{Label = "Street"; Expression = { $_.StreetAddress } },
@{Label = "City"; Expression = { $_.City } },
@{Label = "State/province"; Expression = { $_.State } },
@{Label = "Zip/Postal Code"; Expression = { $_.PostalCode } },
@{Label = "Country/region"; Expression = { $_.Country } },
@{Label = "Job Title"; Expression = { $_.Title } },
@{Label = "Department"; Expression = { $_.Department } },
@{Label = "Company"; Expression = { $_.Company } },
@{Label = "Manager"; Expression = { (Get-AdUser $_.Manager -Properties DisplayName).DisplayName } },
@{Label = "OU"; Expression = { Get-OUFromDistinguishedName $_.DistinguishedName } },
@{Label = "Description"; Expression = { $_.Description } },
@{Label = "Office"; Expression = { $_.Office } },
@{Label = "Telephone number"; Expression = { $_.telephoneNumber } },
@{Label = "Other Telephone"; Expression = { $_.otherTelephone -join ";"} },
@{Label = "E-mail"; Expression = { $_.Mail } },
@{Label = "Mobile"; Expression = { $_.mobile } },
@{Label = "Pager"; Expression = { $_.pager } },
@{Label = "Notes"; Expression = { $_.info } },
@{Label = "Account status"; Expression = { if (($_.Enabled -eq 'TRUE') ) { 'Enabled' } Else { 'Disabled' } } },
@{Label = "User created date"; Expression = { $_.WhenCreated } },
@{Label = "Last logon date"; Expression = { $_.lastlogondate } } |
# Export report to CSV file
Export-Csv -Encoding UTF8 -Path $Csvfile -NoTypeInformation #-Delimiter ";"Línea 54,55,56: Edite el nombre distinguido de destino. Puede tener una unidad organizativa o varias unidades organizativas (en este ejemplo).
Paso 2: obtenga un 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:
Iniciar Usuarios y equipos de Active Directory
Haga clic con el botón derecho en la unidad organizativa de destino y haga clic en Propiedades.
Vaya a la pestaña Editor de atributos
Busque el atributo distuingedName en la lista de atributos
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.
Paso 3: Ejecute el script de PowerShell para exportar usuarios de AD
Ejecute PowerShell como administrador. Cambie la ruta a la carpeta scripts. Ejecute el script de PowerShell para exportar usuarios de AD a un archivo CSV. Espere hasta que se complete.
PS C:\> cd c:\scripts
PS C:\scripts> .\Export-ADUsers.ps1Paso 4: Abra el archivo CSV del informe de usuarios de AD
Vaya a la carpeta de scripts y verifique que ve el archivo AllADUsers_.
Abra el archivo CSV con su aplicación favorita. En nuestro ejemplo, es Microsoft Excel.
¡Todo luce genial!
Leer más: Eliminar usuarios del grupo con PowerShell »
Conclusión
Aprendió a exportar usuarios de AD a CSV con PowerShell. Hay mucha información en cada cuenta de usuario. Con PowerShell, puede tener un informe personalizado que se adapte a sus necesidades.
Disfrutaste este artículo? También te puede gustar Obtener unidades organizativas con PowerShell. No olvides seguirnos y compartir este artículo.


