Archivo

Archivo para miércoles, 14 de mayo de 2014

PowerShell: Alta masiva de usuarios en Office 365 desde un CSV

miércoles, 14 de mayo de 2014 Sin comentarios

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