Administrar usuarios desde la interfaz gráfica de Windows está bien para uno o dos, pero cuando tienes que crear veinte cuentas se vuelve insufrible. PowerShell resuelve esto: con un puñado de comandos gestionas usuarios y grupos, y con un script pequeño creas decenas de cuentas de golpe. Vamos a verlo paso a paso.
Crear un grupo local
Para crear un grupo local se usa el comando New-LocalGroup:
New-LocalGroup Guadix
Esto crea un grupo llamado Guadix. Un grupo es simplemente una forma de organizar usuarios para asignarles permisos en bloque, en vez de uno por uno.
Crear un usuario local
Para crear un usuario se usa New-LocalUser. Si quieres crearlo sin contraseña (por ejemplo, para un entorno de pruebas), añades -NoPassword:
New-LocalUser Grado_Superior -NoPassword
Repites el mismo comando para cada usuario que necesites:
New-LocalUser Grado_Medio -NoPassword
En un entorno real nunca crees usuarios sin contraseña.
-NoPasswordes cómodo para prácticas de laboratorio, pero en producción usa-Passwordcon una contraseña segura.
Ver qué usuarios pertenecen a un grupo
Para comprobar los miembros de un grupo concreto:
Get-LocalGroupMember Guadix
Si el grupo está recién creado y aún no tiene a nadie, este comando no devuelve nada. Es normal: significa que el grupo existe pero está vacío.
Añadir usuarios a un grupo
Para meter un usuario en un grupo se usa Add-LocalGroupMember:
Add-LocalGroupMember Guadix -Member Grado_Superior
Y puedes añadir varios usuarios a la vez separándolos por comas, en un solo comando:
Add-LocalGroupMember usuarios -Member Grado_Superior, Grado_Medio
Eliminar usuarios y grupos
Para deshacer lo anterior se usan los comandos con el verbo Remove:
Remove-LocalGroup Guadix
Remove-LocalUser Grado_Superior, Grado_Medio
Creación masiva de usuarios desde un CSV
Aquí es donde PowerShell demuestra su valor real. En lugar de crear usuarios uno a uno, puedes leerlos desde un archivo CSV y crearlos todos con un script.
Primero, creas un archivo de texto con extensión .csv (por ejemplo usuarios.csv) con la lista de nombres. Puedes comprobar su contenido desde PowerShell con:
cat C:\Material\usuarios.csv
Luego, un script recorre ese archivo y crea cada usuario automáticamente. La idea general es importar el CSV y recorrerlo con un bucle:
Import-Csv C:\Material\usuarios.csv | ForEach-Object {
New-LocalUser $_.nombre -NoPassword
}
Al ejecutarlo, se crean todos los usuarios del archivo de una sola pasada. Para eliminarlos de forma masiva, el script es igual de sencillo pero usando Remove-LocalUser dentro del bucle.
Un apunte sobre PowerShell ISE
Para escribir y guardar estos scripts es cómodo usar PowerShell ISE (el editor integrado), abriéndolo como administrador desde la barra de búsqueda. Ahí puedes guardar el script en un archivo .ps1 y reutilizarlo siempre que lo necesites, en vez de reescribir los comandos cada vez.
Pon a prueba lo que has entendido
Necesitas crear 30 usuarios nuevos a partir de una lista con sus nombres. ¿Cuál es la forma correcta de hacerlo?
Añadir contraseñas seguras en la creación masiva
El ejemplo del CSV que hemos visto usa -NoPassword por simplicidad, pero en un entorno real cada usuario necesita una contraseña. Una forma de hacerlo, generando una contraseña segura al vuelo para cada cuenta:
Import-Csv C:\Material\usuarios.csv | ForEach-Object {
$pass = ConvertTo-SecureString "Cambiar123!" -AsPlainText -Force
New-LocalUser $_.nombre -Password $pass -MustChangePasswordAtNextLogon
}
ConvertTo-SecureString convierte el texto en un formato seguro que PowerShell puede usar como contraseña, y -MustChangePasswordAtNextLogon obliga a cada usuario a cambiarla en su primer inicio de sesión — así la contraseña temporal no se queda como definitiva.
Comprobar que la creación masiva funcionó
Después de ejecutar un script de creación en bloque, conviene verificar que todo se creó correctamente antes de darlo por bueno:
Get-LocalUser | Where-Object { $_.Name -like "Grado_*" }
Este comando filtra y muestra solo los usuarios cuyo nombre empieza por “Grado_”, útil para confirmar de un vistazo que el lote completo de cuentas se creó sin errores, sin tener que revisar la lista entera de usuarios del sistema.
Resumen rápido
New-LocalGroup y New-LocalUser crean grupos y usuarios; Add-LocalGroupMember los relaciona; Remove-* los elimina. Y cuando el número de cuentas crece, un pequeño script que lee un CSV te ahorra un trabajo enorme frente a hacerlo a mano.