1.2K
La creación de cuentas de usuario en Active Directory puede llevar mucho tiempo y ser propensa a errores, principalmente cuando se trata de un gran número de usuarios. Los administradores pueden usar PowerShell para automatizar la importación de cuentas de usuario a Active Directory desde un archivo CSV para solucionar este problema.
En esta publicación de blog, lo guiaremos a través de los pasos necesarios para importar usuarios a Active Directory desde CSV usando PowerShell. Cubriremos todo, desde preparar el archivo CSV con los campos necesarios hasta ejecutar el script de PowerShell y verificar la precisión e integridad de las cuentas de usuario importadas.
Tanto si es un administrador experimentado de Active Directory como si acaba de empezar con PowerShell, esta guía le proporcionará una comprensión clara de cómo importar usuarios a Active Directory desde CSV de manera eficiente.
requisitos previos
- Controlador de dominio de Active Directory de Windows. Este tutorial usa Windows Server 2019 y el dominio es theitbros.com.
- Un editor de código. Esta publicación usará código de estudio visual.
- Si está utilizando una computadora de administración (no el DC), asegúrese de instalar la Herramienta de administración remota del servidor (RSAT).
Nota. Consulte nuestro tutorial sobre cómo instalar e importar el módulo PowerShell Active Directory.
Preparar el archivo CSV
Para comenzar a importar usuarios a Active Directory mediante PowerShell, debemos crear un archivo CSV con los datos del usuario. En este ejemplo, crearemos un archivo CSV llamado «users.csv» con diez usuarios ficticios y los siguientes atributos: Nombre completo, número de serie, Nombre de pila, Compañía, Departamento, Título, Número de teléfono, Ciudad, Nombre de la cuenta SAMAy Contraseña.
Este es un ejemplo de cómo se vería el archivo «users.csv»:
Name,SN,GivenName,Company,Department,Title,TelephoneNumber,City,SAMAccountName,UserPrincipalName,Password Brenda Thompson,Thompson,Brenda,Acme Inc,Marketing,Marketing Specialist,555-1234,New York City,bthompson,bthompson@theitbros.com,P@ssw0rd1 Eric Miller,Miller,Eric,Acme Inc,IT,IT Support Specialist,555-5678,Los Angeles,emiller,emiller@theitbros.com,P@ssw0rd2 Alexis Lee,Lee,Alexis,Acme Inc,HR,HR Manager,555-8901,Chicago,alee,alee@theitbros.com,P@ssw0rd3 Mark Martinez,Martinez,Mark,Acme Inc,Finance,Financial Analyst,555-2345,Houston,mmartinez,mmartinez@theitbros.com,P@ssw0rd4 Emily Adams,Adams,Emily,Acme Inc,Marketing,Marketing Manager,555-6789,San Francisco,eadams,eadams@theitbros.com,P@ssw0rd5 Thomas Johnson,Johnson,Thomas,Acme Inc,IT,IT Manager,555-0123,Seattle,tjohnson,tjohnson@theitbros.com,P@ssw0rd6 Maria Ramirez,Ramirez,Maria,Acme Inc,HR,HR Specialist,555-3456,Miami,mramirez,mramirez@theitbros.com,P@ssw0rd7 Steven Davis,Davis,Steven,Acme Inc,Finance,Senior Financial Analyst,555-7890,Atlanta,sdavis,sdavis@theitbros.com,P@ssw0rd8 Olivia Wilson,Wilson,Olivia,Acme Inc,Marketing,Marketing Coordinator,555-9012,Dallas,owilson,owilson@theitbros.com,P@ssw0rd9 Daniel Brown,Brown,Daniel,Acme Inc,IT,IT Director,555-2345,Boston,dbrown,dbrown@theitbros.com,P@ssw0rd10
Cada fila del archivo CSV representa un solo usuario y las comas separan los atributos de cada usuario. Tenga en cuenta que la contraseña de cada usuario se incluye en texto sin formato, pero usaremos PowerShell para convertirla en una cadena segura antes de importar los usuarios a Active Directory.
Nota. Los valores utilizados son completamente ficticios. En un escenario del mundo real, es importante usar contraseñas apropiadas y seguras y no usar contraseñas fáciles de adivinar como «contraseña123» o «123456».
Crear el guión
Ahora que tiene el archivo CSV que contiene la lista de nuevos usuarios de AD para crear, es hora de que creemos el script para leerlo.
Crear un nuevo archivo llamado Importar-ADUsersFromCSV.ps1 y ábralo en su editor de código.
Una vez que haya creado el nuevo script, copie el código a continuación y péguelo en su script.
# Import-ADUsersFromCSV.ps1
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[string]$CSVFile
)
# Import the CSV file
$users = Import-Csv -Path $CSVFile
# Loop through each user in the CSV file
foreach ($user in $users) {
# Skip this user if any required attribute is empty
if ([string]::IsNullOrEmpty($user.Name) -or [string]::IsNullOrEmpty($user.SamAccountName) -or [string]::IsNullOrEmpty($user.UserPrincipalName) -or [string]::IsNullOrEmpty($user.Password) -or [string]::IsNullOrEmpty($user.GivenName) -or [string]::IsNullOrEmpty($user.SN)) {
Write-Host "Skipping user $($user.SamAccountName) because a required attribute is empty"
continue
}
# Create the new user
$newUserParams = @{
Name = $user.Name
Surname = $user.SN
GivenName = $user.GivenName
DisplayName = $user.Name
SamAccountName = $user.SamAccountName
UserPrincipalName = $user.UserPrincipalName
AccountPassword = ConvertTo-SecureString -String $user.Password -AsPlainText -Force
ChangePasswordAtLogon = $true
CannotChangePassword = $false
PasswordNeverExpires = $false
Enabled = $true
}
# Add non-required attributes, if they are not empty
if (![string]::IsNullOrEmpty($user.Company)) { $newUserParams['Company'] = $user.Company }
if (![string]::IsNullOrEmpty($user.Department)) { $newUserParams['Department'] = $user.Department }
if (![string]::IsNullOrEmpty($user.Title)) { $newUserParams['Title'] = $user.Title }
if (![string]::IsNullOrEmpty($user.TelephoneNumber)) { $newUserParams['OfficePhone'] = $user.TelephoneNumber }
if (![string]::IsNullOrEmpty($user.City)) { $newUserParams['City'] = $user.City }
try {
New-ADUser @newUserParams
Write-Host "Created user $($user.SamAccountName)"
}
catch {
Write-Host "Failed to create user $($user.SamAccountName): $($_.Exception.Message)"
}
}
Este código de función de PowerShell importa un archivo CSV que contiene información del usuario, crea una nueva cuenta de usuario de Active Directory (AD) para cada fila del archivo CSV y establece varios atributos de la cuenta de usuario en función de los valores del archivo CSV.
- El parámetro bloque define un único parámetro obligatorio $CSVArchivoque es la ruta al archivo CSV que contiene la información del usuario.
- La función luego importa el archivo CSV usando el Importar-Csv cmdlet y almacena los datos en el $usuarios variable.
- Luego, la función recorre cada usuario en el archivo CSV usando un para cada bucle. Para cada usuario, la función verifica si alguno de los atributos requeridos (Nombre, SamAccountName, UserPrincipalName, Contraseña, Nombre de pilay número de serie) están vacíos. Si algún atributo requerido está vacío, la función omite a ese usuario y envía un mensaje a la consola.
- Si todos los atributos requeridos están presentes, la función crea una nueva cuenta de usuario en Active Directory usando el Nuevo usuario ADU cmdlet, con los atributos especificados en $nuevosParámetrosDeUsuario. Estos atributos incluyen el nombre del usuario, apellido, nombre de pila, nombre para mostrar, SamAccountName, UserPrincipalName, contraseña y varias otras configuraciones, como si el usuario debe cambiar su contraseña al iniciar sesión y si su contraseña se puede cambiar.
- La función también comprueba los atributos no necesarios, como Compañía, Departamento, Título, Número de teléfonoy Ciudad en el archivo CSV y los agrega al $nuevosParámetrosDeUsuario tabla hash si no están vacíos.
- Si falla la creación de una cuenta de usuario, la función envía un mensaje de error a la consola.
En general, esta función proporciona una forma de crear varias cuentas de usuario en Active Directory en función de los datos almacenados en un archivo CSV, lo que ahorra tiempo y esfuerzo en comparación con la creación manual de cada cuenta de usuario.
Ejecutar el guión
Ahora importemos usuarios a Active Directory desde csv usando el script. Suponiendo que el script se guarda como Importar-ADUsersFromCSV.ps1 y el archivo CSV usuarios.csv está en el mismo directorio que el script:
Tipo .Import-ADUsersFromCSV.ps1 -CSVFile .users.csv y presione Entrar. Esto ejecutará el script e importará las cuentas de usuario desde el usuarios.csv archivo. Si la ejecución del script fue exitosa, vería un resultado similar a la imagen a continuación.
Nota: Si encuentra un error al ejecutar el script, es posible que deba ajustar temporalmente la política de ejecución de PowerShell ejecutando el siguiente comando. Este comando permite que el script se ejecute en su sistema.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
Confirmar los nuevos usuarios
Después de importar nuevos usuarios de AD mediante el script, ejecutemos otro comando para verificar que los nuevos usuarios se hayan creado. Para hacerlo, ejecute el siguiente código en PowerShell.
##Get-ADUsersFromCSV.ps1
# Read the properties names from the CSV except for Password.
$properties = (Get-Content .users.csv)[0].Split(",")[0..9]
# Define a placeholder for the
$users = [System.Collections.ArrayList]@()
# Import the usercs.csv file and loop through each SamAccountName
(Import-Csv .users.csv).SamAccountName | ForEach-Object {
try {
# Get the AD user and retrieve specific properties
$user = Get-ADUser -Identity $_ -Properties $properties -ErrorAction Stop | Select-Object $properties
"Found user $_" | Out-Default
$null = $users.Add($user)
}
catch {
# Display the error is the command failed
$_.Exception.Message | Out-Default
}
}
# Display the list of users found in AD.
$users | Format-Table
Este código de PowerShell hace lo siguiente:
- Lee la primera línea del archivo CSV «users.csv» en el directorio actual para recuperar los nombres de las propiedades excepto la propiedad «Contraseña». Los nombres de las propiedades se almacenan en una variable de matriz $propiedades.
- Define un vacío Lista de arreglo objeto llamado $usuarios que almacenará los objetos de usuario recuperados.
- Importa el archivo CSV «users.csv» y recupera el SamAccountName valores de columna usando el Importar-Csv cmdlet y la notación de puntos .NombreCuentaSam.
- Para cada SamAccountName valor, intenta recuperar el objeto de usuario de AD correspondiente utilizando el Obtener ADUser cmdlet con el especificado $propiedades y el ErrorAcción Detener parámetro para forzar un error si falla el comando.
- Si el objeto de usuario de AD se recupera correctamente, se agrega a la $usuarios matriz usando el ArrayList.Add() método, y un mensaje “Usuario encontrado $_” se envía a la consola.
- Si el comando falla, el mensaje de error se envía a la consola.
- Finalmente, emite el $usuarios arreglo en una tabla formateada usando el Formato-Tabla cmdlet.
En resumen, este código de PowerShell recupera propiedades específicas de los usuarios de Active Directory cuyas SamAccountName Los valores se enumeran en el usuarios.csv archivo y los almacena en un objeto ArrayList $usuarios. También genera mensajes para cada recuperación exitosa y mensajes de error para cada recuperación fallida. Finalmente, muestra la lista de usuarios recuperados en una tabla formateada.
El resultado sería similar a la captura de pantalla a continuación.
Conclusión
La importación de usuarios a Active Directory desde CSV es un proceso sencillo que puede ahorrarle una cantidad significativa de tiempo y esfuerzo al tratar con una gran cantidad de usuarios. Siguiendo los pasos descritos en esta guía, puede importar rápida y fácilmente cuentas de usuario a Active Directory usando PowerShell.
El proceso implica preparar el archivo CSV con los campos obligatorios, crear un script de PowerShell y ejecutar el script para importar las cuentas de usuario. Es fundamental verificar la precisión y la integridad de las cuentas de usuario importadas antes de activarlas en el entorno de Active Directory.
Además, el proceso se puede ampliar para incluir atributos de usuario adicionales, como pertenencia a un grupo, departamento o título, para garantizar que los usuarios importados tengan toda la información necesaria para sus cuentas.
En general, importar usuarios a Active Directory desde CSV es una excelente manera de optimizar la administración de cuentas de usuario en Active Directory, mejorar la eficiencia y reducir los errores.




