Aunque la interfaz gráfica de administración de Office 365 es más que aceptable, la gestión a través de Powershell es sin duda la opción a seguir para realizar nuestras tareas de la manera más rápida y eficiente. Hoy vamos a repasar los cmdlets esenciales para esta gestión de usuarios, contraseñas, licencias,etc..

 office365composed

 

La gestión de usuarios en Office 365 trabaja a través de Azure Active Directory por lo tanto para ejecutar los siguientes ejemplos necesitaremos instalar el módulo de Azure AD para Powershell. Como siempre en Powershell los límites los marcan vuestra imaginación a la hora de crear scripts ofreciendo unas capacidades (cuasi) ilimitadas, a continuación vamos a ver los que creemos cmdlets esenciales para contruir nuestros scripts.

 

Gestionando usuarios


 

  • cmdlet Get-MsolUser

 

A través de este cmdlet podemos obtener información de nuestros usuarios, pudiendo filtrar los resultados por ejemplo por cualquiera de los parámetros asociados a cada usuario como podrían ser: City, Country, Department, DomainName, License, ObjectId, Title, UnlicensedUsersOnly, UsageLocation, UserPrincipalName,etc...

Los resultados si no especificamos nada vendrán limitados a 250. Podemos utilizar el parámetro “All” para recibirlos todos o limitarlos a cualquier valor con “MaxResults”. Vamos a ver algunos ejemplos

Obtener una lista de todos los usuarios

Get-MsolUser -All

Obtener una lista de los ID de todos los usuarios (refinando la anterior búsqueda)

Get-MsolUser -All | Select UserPrincipalName

Obtener una lista, limitada a 20 resultados, de User ID, Object ID y Título

Get-MsolUser -MaxResults 20 | Select UserPrincipalName, ObjectId, Title

Listar todos los usuarios de un determinado dominio

Get-MsolUser - All -DomainName cyberseguridad.net

Listar todos los usuarios que están sincronizados (desde nuestro AD local) y que aún no tienen licéncia

Get-MsolUser -All -SynchronizedUsers -UnlicensedUsersOnly

Como decíamos antes hay un montón de propiedades de usuario por las que nos puede interesar filtrar una búsqueda, podemos listar todas las de un usuario con el comando

Get-MsolUser -UserPrincipalName [email protected] | FL

 

  • cmdlet Set-MsolUser

 

Igual que Get-MsolUser nos da información, el cmdlet para cambiar esta información es Set-MsolUser. Vamos a ver algunos ejemplos:

Para cambiar nombre y apellidos de un usuario

Set-MsolUser -UserPrincipalName [email protected] -LastName “Apellido” -DisplayName “Nombre

Para establecer la ciudad a todos aquellos usuarios cuyo país sea España. Aquí vemos un ejemplo de tubería, para trabajar con resultados de una primera búsqueda.

Get-MsolUser -All -Country “España” | Set-MsolUser -City “Barcelona

Cambiar una propiedad a partir de un listado de usuarios en un fichero .csv

Import-CSV “listado.csv” | Set-MsolUser -Department “Administracion

 

  • cmdlet Set-MsolUserPrincipalName

 

Este otro cmdlet nos permite a diferencia del anterior modificar el “principal name” que vendría a ser la dirección de correo principal, acción que no podemos llevar a cabo con el cmdlet Set-MsolUser

Cambiar el principal name de un usuario

Set-MsolUserPrincipalName -UserPrincipalName [email protected] -NewUserPrincipalName [email protected]

 

Gestión de contraseñas


En este apartado veremos como podemos cambiar desde una contraseña para un usuario como gestionar la política de contraseñas de nuestro dominio.

 

  • cmdlet Set-MsolUser

 

Fijar una dirección de correo alternativa donde el usuario recibiría una recuperación de contraseña

Set-MsolUser -UserPrincipalName [email protected] -AlternateEmailAddresses [email protected]

Fijar la necesidad de una contraseña fuerte para el usuario. Aquí vemos el uso de variables $True / $False para determinadas propiedades.

Set-MsolUser -UserPrincipalName [email protected] -StrongPasswordRequired $True

Fijar que la contraseña para un usuario nunca expire

Set-MsolUser -UserPrincipalName [email protected] -PasswordNeverExpires $True

 

  • cmdlet Set-MsolUserPassword

 

Cambiar la contraseña para un usuario (el sistema la generará aleatoriamente)

Set-MsolUserPassword -UserPrincipalName [email protected] -NewPassword “”

cambiar la contraseña para un usuario (especificándola y desactivando la obligación de cambiarla al hacer login)

Set-MsolUserPassword -UserPrincipalName [email protected] -NewPassword “Ejemplo1” -ForceChangePassword $False

 

  • cmdlet Set-MsolPasswordPolicy

 

Este cmdlet nos servirá para cambiar a nivel de dominio la política de expiración de contraseñas. También podemos ver el estado actual de la misma con Get-MsolPasswordPolicy

Establecer que las contraseñas expiren cada 90 dias y que al usuario se le notifique con 15 días por adelantad

Set-MsolPasswordPolicy -DomainName Cyberseguridad.net -NotificationDays 15 ValidityDays 90

 

Gestión de grupos


 

  • cmdlet Get-MsolGroup

 

Con este cmdlet podremos filtrar los resultados con algunos de lo siguientes parámetros: All (mostrar todos los resultados), GroupType (Security, MailEnabledSecurity o DistributionList), SearchString (para buscar por parte del nombre del grupo), UserPrincipalName (muestra los grupos donde un usuario sea miembro),etc... Seguidamente pudiendo filtrar los resultados anteriores por propiedades como CommonName (nombre del grupo), Description, DisplayName, EmailAddress, ManagedBy (por quien está dirigido),etc.. Vamos a ver algunos ejemplos:

Ver listado de todos los grupos y mostrar el nombre y su dirección de email

Get-MsolGroup -All | Select DisplayName, EmailAddress

Ver las propiedades de un grupo determinado

Get-MsolGroup -SearchString “staff” | fl

Ver los miembros de un grupo determinado

Get-MsolGroupMember -GroupObjectId iddeejemplo

 

  • cmdlet Set-MsolGroup

 

Con este cmdlet podremos cambiar algunas de las propiedades del grupo como Description, DisplayName, ManagedBy (dueño del grupo),etc..

Cambiar nombre de un grupo

Set-MsolGroup -ObjectId iddeejemplo -Displayname “nuevo nombre

 

  • cmdlet New-MsolGroup

 

Con este cmdlet podemos crear nuevos grupo de seguridad, estableciendo Description, DisplayName o ManagedBy

Creación de un nuevo grupo

New-MsolGroup -DisplayName “nombre” -Description “descripcion” -Managedby [email protected]

 

Gestión de los usuarios de los grupos


 

  • cmdlet Add-MsolGroupMember

 

Con este cmdlet podemos añadir usuarios o grupos a un grupo (ya que estos se pueden anidar). Debemos usar de nuevo los ID. Las variables serían GroupMemberObjectId (el ID del usuario o grupo que queremos añadir a otro), GroupMemberType (el tipo de usuario dentro del grupo destino como por ejemplo User) y el GroupObjectId (el ID del grupo destino)

Ejemplo

Add-MsolGroupMember -GroupObjectId idejemplo -GroupMemberObjectId idejemplo2 -GroupMemberType User

 

  • cmdlet Remove-MsolGroupMember

 

Funciona de la misma manera que el anterior con la diferencia que especificamos el ID del usuario o grupo a quitar.

Ejemplo

Remove-MsolGroupMember -GroupObjectId idejemplo GroupMemberObjectId idejemplo2 -GroupMemberType User

 

  • cmdlet Get-MsolGroupMember

 

Finalmente con este cmdlet podemos obtener un listado de los miembros de un grupo, pudiendo filtrar los resultados por diferentes propiedades de los miembros como DisplayName, EmailAddress,GroupMemberType,etc..

Obtener un listado de todos los miembros de un grupo

Get-MsolGroupMember -GroupObjectId idejemplo -All

 

Gestión de Licencias


Un elemento clave a controlar en Office 365 es el tema de licencias, tanto para no pagar más de lo necesario como para gestionar adecuadamente a los componentes que tiene acceso cada usuario. En este aspecto el cmdlet básico es “Get-MsolAccountSku” que nos devolverá un listado de todas nuestras subscripciones, la cantidad de licencias totales y disponibles, además del ID de subscripción (AccountSkuId) que utilizaremos a continuación en los ejemplos.

Para entender esto correctamente hemos de entender que cada plan cuenta con unos determinados servicios (Sharepoint, Yammer, Skype for Business..) que a su vez pueden ser deshabilitados total o parcialmente. Para ello, el siguiente cmdlet.

 

  • cmdlet New-MsolLicenseOptions

 

Usaremos este cmdlet para crear objetos con opciones de licencia, utilizando el parametro de AccountSkuId y el parámetro DisabledPlans para especificar que queremos deshabilitar para el usuario dentro del plan.

 

  • cmdlet Set-MsolUserLicense

 

Con este cmdlet podemos asignar, quitar o actualizar las licencias de cada usuario. Contaremos con opciones como AddLicenses, LicenseOptions, ObjectId (el ID de usuario), RemoveLicenses... vamos a ver algunos ejemplos

Ver la licencia asignada a un usuario

Get-MsolUser -SearchString “[email protected]” | Select DisplayName, Licenses

Asignar una licéncia a un usuario

Set-MsolUserLicense -UserPrincipalName [email protected] -AddLicenses ejemploAccountSkuId

Eliminar una licencia a un usuario

Set-MsolUserLicense -UserPrincipalName [email protected] -RemoveLicenses ejemploAccountSkuId

Crear un nuevo usuario con su correspondiente licencia

New-MsolUser -UserPrincipalName [email protected] -FirstName Nombre -LastName Apellido -DisplayName “Test” -LicenseAssignment AccountSkuId -UsageLocation “ES

Estos son todos creemos ejemplos muy útiles para todos aquellos administradores de Office 365. A partir de aquí como siempre con Powershell el techo lo marca la habilidad de cada persona a la hora de crear scripts para automatizar todas estas funciones para hacer de la gestión diaria de esta plataforma un proceso fluido y ágil.