PowerShell: Alta masiva de usuarios en Office 365 desde un CSV
Hola a todos,
No sé si trabajáis con Office 365 y os gusta PowerShell. Particularmente, no suelo usar mucho el segundo pero de vez en cuando (algún proyecto) lo requiere y, aun sabiendo que por Internet está lleno de scripts, me gusta montármelos yo mismo.
En este caso, he creado un script que ayuda a realizar la carga de usuarios desde un CSV hacia un tenant de Office 365 completamente cloud.
Los parámetros de entrada en el CSV son:
FirstName | Nombre del usuario que vamos a crear |
LastName | Apellido del usuario |
DisplayName | Nombre que se mostrará en Office 365 |
UserPrincipalName | Login name, o cómo el usuario se validará en Office 365 |
UsageLocation | Ubicación del usuario. Importante o no podremos dar de alta correctamente al usuario. Para España, el código es ES |
Office | Oficina de nuestro usuario |
Department | Departamento de trabajo del usuario |
PhoneNumber | Teléfono al que localizar a nuestro usuario |
Veréis que en el código se establece un valor por defecto a la variable –Password.
Esto se hace así ya que por defecto se genera una contraseña aleatoria que tendríamos que guardar de algún modo. Si la establecemos por defecto, y por defecto caduca, el usuario pondrá la suya en el primer inicio de sesión.
Veréis que guardo en la variable $Licencias los valores de los diferentes tipos de licencias. Puede que en vuestro caso sólo tengáis un valor pero en el mío había 2 diferentes, una StandarPack y otra EnterprisePack–
El código resultante es:
# Solicitud de credenciales para conectar a Office 365
$cred = Get-Credential
# Conexión a Office 365 con las credenciales solicitadas
Connect-MsolService –Credential $cred
# Consulta del tipo de licencias. Se guardan en una variable
$Licencias = Get-MsolAccountSku
#Mostrar las licencias del cliente y separarlas para asignar según los usuarios
$option1 = $Licencias.AccountSkuID.Item(0)
$option2 = $Licencias.AccountSkuID.Item(1)
#Petición de parth del fichero donde están los usuarios
[void] [System.Reflection.Assembly]::LoadWithPartialName(«System.Windows.Forms»)
$ofd = New-Object System.Windows.Forms.OpenFileDialog
$ofd.ShowHelp=$true
if($ofd.ShowDialog() -eq «OK») { $ofd.FileName }
$Fichero = $ofd.Filename
#Alta de usuarios en Office 365 de modo recursivo a través del fichero CSV
Write-Host «Inicio de la carga de usuarios en Office 365»
Import-Csv -Path $Fichero | ForEach-Object {
New-MsolUser -FirstName $_.FirstName -LastName $_.LastName
-UserPrincipalName $_.UserPrincipalName
-DisplayName «$($_.FirstName) $($_.LastName)«
-LicenseAssignment $option1
-UsageLocation $_.UsageLocation
-Department $_.Department
-PhoneNumber $_.PhoneNumber `
-Password P@ssw0rd
}
#Fin de la carga de usuarios
Write-Host «Fin de la carga de usuarios en Office 365»
Saludos,
Marc