La gestión eficiente de usuarios es un aspecto crucial de la administración de sistemas, especialmente en entornos empresariales con un gran número de usuarios. PowerShell, con su potente framework de scripting y su integración profunda con Windows, ofrece una solución robusta para automatizar tareas administrativas, incluyendo la creación de usuarios. En este artículo, presentamos un script de PowerShell que recorre un archivo CSV para añadir usuarios a un sistema Windows, utilizando su DNI como contraseña.
Estructura del Archivo CSV
Para este ejemplo, usaremos un archivo CSV usuarios.csv
con la siguiente estructura, donde cada campo está separado por punto y coma (;
):
usuario;contraseña;nombre;dni
user1;pass1;Juan Perez;12345678
user2;pass2;Laura Gomez;87654321
user3;pass3;Carlos Ruiz;12348765
Este archivo contiene la información necesaria para crear los usuarios: nombre de usuario, contraseña (que no utilizaremos, dado que la contraseña será el DNI), nombre completo y DNI.
Script de PowerShell para Añadir Usuarios
El siguiente script de PowerShell, AgregarUsuarios.ps1
, lee el archivo CSV, omite la primera línea de cabecera y ejecuta un bucle para añadir cada usuario al sistema, estableciendo su DNI como contraseña.
# Ruta al archivo CSV
$archivoCsv = ".\usuarios.csv"
# Verificar si el archivo CSV existe
if (-not (Test-Path $archivoCsv)) {
Write-Host "El archivo $archivoCsv no existe."
exit
}
# Importar el archivo CSV, omitiendo la primera línea
$usuarios = Import-Csv -Path $archivoCsv -Delimiter ';'
foreach ($usuario in $usuarios) {
# Obtener los detalles del usuario del CSV
$nombreUsuario = $usuario.usuario
$nombreCompleto = $usuario.nombre
$dni = $usuario.dni
# Verificar si el usuario ya existe
if (Get-LocalUser -Name $nombreUsuario -ErrorAction SilentlyContinue) {
Write-Host "El usuario $nombreUsuario ya existe. Omitiendo..."
} else {
# Crear el usuario
$userInfo = @{
Name = $nombreUsuario
FullName = $nombreCompleto
Description = "Creado mediante script PowerShell"
Password = $dni
PasswordNeverExpires = $false
UserMayNotChangePassword = $false
AccountNeverExpires = $false
}
New-LocalUser @userInfo | Out-Null
# Establecer el DNI como contraseña y forzar el cambio de contraseña en el primer inicio de sesión
$securePassword = ConvertTo-SecureString $dni -AsPlainText -Force
Set-LocalUser -Name $nombreUsuario -Password $securePassword -PasswordNeverExpires $false -UserMayNotChangePassword $false
Write-Host "Usuario $nombreUsuario añadido exitosamente."
}
}
Write-Host "Proceso de añadir usuarios completado."
Instrucciones para Ejecutar el Script
- Guardar el Script: Copia el código proporcionado en un archivo llamado
AgregarUsuarios.ps1
. - Ejecutar PowerShell como Administrador: Para añadir usuarios locales, necesitas permisos de administrador. Abre PowerShell con derechos de administrador.
- Habilitar la Ejecución de Scripts: Por defecto, PowerShell restringe la ejecución de scripts. Puedes permitir temporalmente la ejecución de scripts con el siguiente comando:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
- Ejecutar el Script: Navega al directorio donde guardaste el script y ejecútalo con el comando:
.\AgregarUsuarios.ps1
Consideraciones de Seguridad
- Este script establece el DNI como contraseña, lo cual puede no cumplir con las políticas de seguridad de tu organización. Considera implementar políticas de contraseñas más seguras.
- Asegúrate de revertir los cambios en la política de ejecución de scripts de PowerShell una vez completada la tarea para mantener la seguridad del sistema.
Conclusión
Automatizar la creación de usuarios en Windows mediante PowerShell y archivos CSV no solo ahorra tiempo, sino que también reduce el potencial de error humano. Este enfoque demuestra la flexibilidad y el poder de PowerShell para la administración de sistemas Windows, facilitando la gestión de usuarios en entornos
grandes y dinámicos. Con prácticas de seguridad adecuadas y una planificación cuidadosa, los scripts de PowerShell se convierten en una herramienta indispensable para los administradores de sistemas.