Active Directory: Alta masiva de usuarios con Powershell

En alguna ocasion puedes tener la necesidad de crear un monton de usuarios en directorio activo. Con powershell podemos tenerlos en un minuto.

Los datos que podamos rellenar dependeran evidentemente de lo completo que nos haya pasado el fichero RRHH...

$suffix="dominio.local"
$datos=get-content ".\AltaMasivaDominio.csv"
out-file ".\AltaMasivaDominio.log" -input "usuario;contraseña;nombre;apellido1;apellido2;puesto"
$datos|%{
$campo=$_.split(" ")
$usuario=$campo[0]
$apellido1=$campo[1]
$apellido2=$campo[2]
$nombre=$campo[3]
$puesto=$campo[4]
$pass1=$nombre.substring(1,1)
$pass2=$nombre.substring(2,1)
$password="$pass1$usuario$pass2"
out-file ".\AltaMasivaDominio.log" -input "$usuario;$password;$nombre;$apellido1;$apellido2;$puesto" -append
$objdomain=New-Object System.DirectoryServices.DirectoryEntry "LDAP://OU=Departamentos,DC=Dominio,DC=local"
$objUser = $objDomain.Create("user", "CN=$usuario") #Creo el objeto en DA
$objUser.Put("sAMAccountName","$usuario") 
$objUser.Put("userPrincipalName","$usuario@$suffix")
$objUser.setinfo()

$objuser.givenname="$nombre"
$objuser.sn="$apellido1 $apellido2" 
$objuser.displayname="$nombre $apellido1 $apellido2"
$objuser.description="$nombre $apellido1 $apellido2"
$objuser.title="$puesto"

$objUser.SetPassword($password)
$objuser.Put("PwdLastSet", 0) #cambiar la contraseñe en el primer inicio de sesion
$objuser.AccountDisabled = $False
$objuser.userAccountControl = 512 #usuario normal
$objUser.setinfo()
}

Comentarios