En este post vamos a ver como provisionar usuarios por paquetes (o bulk mode) a través de PowerShell.
Una de las primeras tareas cuando tenemos entre manos un nuevo Tenant de Office 365 es la creación de usuarios. En caso de que tengamos que provisionar pocos usuarios lo podemos hacer cómodamente desde la interfaz gráfica. Ahora bien, en entornos medianos o grandes, por poner un ejemplo, de unos 500 usuarios, el ir creando uno a uno, dando licencia, asignando contraseña, etc… puede ser ciertamente tedioso.
Para ello podemos aprovecharnos de la potencia de PowerShell para automatizar tareas y hacerlas más rápidas.
Pongamos por caso que tenemos nuestro dominio en la oficina y queremos dar a cada usuario de la misma una licencia de Office 365. Normalmente, como buena práctica, deberíamos tener documentado un listado de usuarios del dominio con su UPN, nombre, apellidos, recursos a los que debe tener acceso…etc.
Podemos coger parte de esa información para generar un archivo CSV del cual tomar los datos para provisionar a nuestros usuarios.
Otra opción es sincronizar nuestro AD local con Office 365 y automáticamente nuestros usuarios se sincronizarán desde AD local a Azure AD, es decir, se nos van a generar de manera automática. Pero eso será en otro artículo.
Nos conectamos a PS tal y como hicimos en este artículo:
https://itadmins.es/conexion-a-office-365-y-exchange-online-a-traves-de-powershell/
Lo primero y más importante es obtener el tipo de licencias que tenemos disponibles en nuestro Tenant, para lo cual ejecutamos:
Get-MsolAccountSKU
Y obtendremos lo siguiente:
Como veis, en este tenant tenemos disponibles dos tipos de licencias.
Ahora preparamos un archivo tipo CSV (Comma Separated Value) como éste:
Puede parecer irrelevante, pero el orden de las columnas tiene que ser tal que la columna que nos indique la localización siempre debe ir antes de la que asigna la licencia. Fijaos que intencionadamente no he creado una columna para la contraseña de cada cuenta ya que se va a generar de manera automática. En caso de que sí la quisiéramos, debe ir a continuación de la columna relativa al UPN.
Guardamos el archivo en una carpeta llamada CSV:
Si lo abrimos con un bloc de notas veremos algo así:
Ya tenemos el archivo preparado.
Ahora vamos a proceder a la creación de los usuarios.
Para ello vamos a importar ese CSV, cogiendo del mismo la información que figura en cada línea y que necesitamos para provisionar los usuarios, el User, DisplayName, Location y License. El ForEach-Object lo que hace es coger cada fila del CSV y aplicar el comando entre llaves llamando con $_. al nombre de cada columna. Es decir, que si en el CSV a la columna UserPrincipalName le llamamos UPN, el comando cambiaría a: -UserPrincipalName $_.UPN. Es importante que nos fijemos en este detalle para evitar problemas.
Ejecutamos:
Import-Csv -Path “C:\csv\User.csv” | ForEach {New-MsolUser -DisplayName $_.DisplayName -UserPrincipalName $_.User -UsageLocation $_.Location -LicenseAssignment $_.License}
Como vemos se nos ha generado de manera automática una contraseña para cada usuario y aparece con una licencia asignada… pero podríamos hacer algo más, que es asignar una contraseña que nosotros queramos y además forzar a que el propio usuario la cambie la primera vez que entre en el portal de Office 365.
Para ello generamos un CSV como éste:
Lo guardamos con el nombre User2.csv en la misma carpeta que antes, quedando tal que así:
Y ahora repetiremos el mismo comando pero añadiendo la llamada para la creación de la contraseña y usar el switch -ForceChangePassword con el valor $True para que a cada usuario se le solicite el cambio de contraseña la primera vez que accede.
Import-Csv -Path “C:\csv\User2.csv” | ForEach {New-MsolUser -DisplayName $_.DisplayName -UserPrincipalName $_.User -Password $._Pass -UsageLocation $_.Location -LicenseAssignment $_.License -ForceChangePassword $True}
Vemos cómo se han generado los usuarios con la contraseña que hemos indicado.
Por supuesto podemos añadir más campos, como Name, LastName… Esto es un poco a gusto de cada uno y el nivel de detalle que queramos tener.
Y esto es todo, esperamos que os haya sido de utilidad y nos vemos en el próximo post.
Saludos!
Deja una respuesta