Asignar licencias de Microsoft 365 a usuarios con MS Graph PowerShell
En la serie de administración de licencias de Microsoft 365, este blog explorará varios escenarios para asignar licencias a usuarios de Microsoft 365.
Con la retirada de cmdlets de asignación de licencias heredados como 'Set-MsolUserLicense' y 'Set-AzureADUserLicense', los administradores han pasado a métodos diferentes. Éstas incluyen:
- Asignar licencias a través del portal de administración
- Uso de Graph API para asignaciones de licencias
- Empleando MS Graph PowerShell
Si bien el portal de administración puede no ser ideal para asignaciones de licencias masivas, la API Graph puede ser un desafío, especialmente para los administradores menos familiarizados con el desarrollo web y el uso de API. Por lo tanto, este blog se centra en un enfoque fácil de usar. Proporciona scripts de PowerShell para asignar licencias a usuarios de Microsoft 365 mediante el SDK de MS Graph PowerShell.
Asignar licencias de Microsoft 365 con PowerShell
Hemos seleccionado casos de uso considerando varios escenarios en tiempo real. Los escenarios incluyen:
- Asignar licencia de Microsoft 365 a un usuario
- Asignar varias licencias de M365 a un usuario
- Asignar licencia(s) a usuarios masivos (ingrese CSV)
- Copie la licencia M365 de un usuario a otro
- Asignar licencia con planes deshabilitados
- Asignar licencia de Microsoft 365 a usuarios externos
- Asignar licencia de Microsoft 365 a un grupo
Nota: También puede descargar el script de PowerShell de MS Graph dedicado para realizar más de 10 tareas de administración de licencias de Microsoft 365, que abarcan la asignación, eliminación y generación de informes de licencias.
1. Asignar licencia de Microsoft 365 mediante MS Graph PowerShell
Como parte del proceso de incorporación de M365, los empleados necesitan acceso a servicios esenciales de Microsoft 365 como Exchange Online, SharePoint y Teams. Para simplificar esto, los administradores pueden utilizar el siguiente fragmento de código para asignar la licencia necesaria a un usuario.
Set-MgUserLicense -UserId <UPN> -AddLicenses @{SkuId = <SKuId> } -RemoveLicenses @()Para identificar el SkuId de una licencia específica, puede utilizar el cmdlet 'Get-MgSubscribedSku'.
Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'EnterprisePack'El ejemplo anterior recupera el SkuId de la licencia E3. Puede utilizar este SkuId para asignar la licencia E3 a un usuario.
Por ejemplo,
Set-MgUserLicense –UserId John@contoso.com -AddLicenses @{SkuId = '6fd2c87f-b296-42f0-b197-1e91e994b900'} -RemoveLicenses @()2. Asignar varias licencias a un usuario de M365 mediante PowerShell
Microsoft 365 ofrece una variedad de planes de licencia, cada uno de los cuales brinda acceso a servicios y aplicaciones específicos. En situaciones en las que los usuarios necesitan acceso a múltiples servicios, los administradores deben asignar múltiples licencias de manera eficiente para asegurarse de que los usuarios tengan las herramientas adecuadas para sus funciones.
Cuando desee asignar licencias masivas de Microsoft 365 a un usuario, puede utilizar el siguiente cmdlet.
$AddLicenses= @( @{SkuId = <SkuID>}, @{SkuId = <SkuID>})
Set-MgBetaUserLicense –UserId <UPN> -AddLicenses $AddLicenses -RemoveLicenses @()Por ejemplo,
$AddLicenses= @( @{SkuId = ‘c7df2760-2c81-4ef7-b578-5b5392b571df'
}, @{SkuId ='f30db892-07e9-47e9-837c-80727f46fd3d'})
Set-MgBetaUserLicense –UserId John@contoso.com -AddLicenses $AddLicenses -RemoveLicenses @()El código anterior asigna licencias Flow_Free y E5 al usuario John.
Nota: Puede recuperar la información de los planes de licencia y sus fechas de vencimiento antes de asignar licencias a los usuarios para una mejor planificación.
3. Asignar licencias de Microsoft 365 a varios usuarios
La asignación manual de licencias para cada usuario puede llevar mucho tiempo, especialmente en organizaciones más grandes. Para asignar varias licencias de Office 365 a una gran cantidad de usuarios, debe preparar un archivo CSV que contenga las identidades de los usuarios y ejecutar el siguiente código.
$AddLicenses= @( @{SkuId = <SkuID>}, @{SkuId = <SkuID>})
$UserNames = Import-Csv -Header "UPN" $UserNamesFile
foreach ($Name in $UserNames) {
$UPN = $Name.UPN
Set-MgBetaUserLicense –UserId <UPN> -AddLicenses $AddLicenses -RemoveLicenses @()
}4. Copiar la licencia de Office 365 de un usuario a otro usuario de Microsoft 365
Copiar una licencia no significa transferirla de un usuario a otro. Esta función resulta útil cuando desea asignar el mismo conjunto de licencias a otro miembro del equipo, especialmente a alguien que se ha unido recientemente.
Para identificar al usuario cuya licencia se debe copiar, obtenga detalles sobre los usuarios de Microsoft 365 y sus licencias asignadas. Una vez que tenga estos detalles, continúe con el código a continuación.
$Source = Get-MgUser -UserId <Source User UPN>
Set-MgUserLicense -UserId <Destination User UPN> -AddLicenses $Source.AssignedLicenses -RemoveLicenses @()Por ejemplo,
$Source = Get-MgUser -UserId John@contoso.com
Set-MgUserLicense -UserId Lisa@contoso.com -AddLicenses $Source.AssignedLicenses -RemoveLicenses @()Aquí, las licencias asignadas a John se copian a Lisa.
5. Asignar licencia con planes deshabilitados para usuarios de Microsoft 365
A menudo, los administradores quieren deshabilitar el acceso a servicios específicos de Microsoft 365, ya sea que estos servicios estén desactualizados o que la organización ya dependa de un software diferente para ese propósito. En tales casos, los administradores pueden asignar licencias de Microsoft 365 con planes deshabilitados. Cuando los planes están deshabilitados, los usuarios no pueden acceder a esos servicios.
Para deshabilitar los planes de servicio al asignar licencias a los usuarios, puede utilizar el siguiente script.
$Subscription = Get-MgSubscribedSku -All | Where SkuPartNumber -eq <SKU> $DisabledPlans = $Subscription.ServicePlans | where ServicePlanName -in (<ServicePlan_Name>) | Select -ExpandProperty ServicePlanId
$AddLicenses = @( @{SkuId = $Subscription.SkuId DisabledPlans = $disabledPlans } )
Set-MgUserLicense -UserId <UPN> -AddLicenses $addLicenses -RemoveLicenses @()Por ejemplo, el siguiente código deshabilita el plan Yammer (Viva Engage) de la licencia E3 usando MS Graph PowerShell.
$Subscription = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'ENTERPRISEPACK'
$DisabledPlans = $Subscription.ServicePlans | where ServicePlanName -in ('VIVAENGAGE_CORE','YAMMER_ENTERPRISE') | Select -ExpandProperty ServicePlanId
$AddLicenses = @( @{SkuId = $Subscription.SkuId
DisabledPlans = $DisabledPlans } )
Set-MgUserLicense -UserId John@contoso.com -AddLicenses $addLicenses -RemoveLicenses @()El ejemplo dado asigna una licencia E3 y bloquea el acceso de Yammer a John.
Nota: Puede consultar este documento de MS para obtener más información sobre el nombre de la suscripción y los detalles del plan de servicio asociado.
6. Asignar licencia de Microsoft 365 a usuarios externos
A medida que las organizaciones interactúan cada vez más con socios, proveedores o clientes externos, proporcionarles las licencias M365 necesarias se vuelve esencial para una colaboración fluida. Para asignar una licencia a un usuario externo en Microsoft 365, puede elegir cualquiera de los métodos descritos en el blog.
Por ejemplo, para asignar una licencia a un usuario invitado, ejecute el siguiente cmdlet.
Set-MgUserLicense –UserId mark_fabrikam.com#EXT#@contoso.com -AddLicenses @{SkuId = '6fd2c87f-b296-42f0-b197-1e91e994b900'} -RemoveLicenses @()El código anterior asigna una licencia E3 al usuario externo Mark de la organización Fabrikam.
7. Asignar licencia de Microsoft 365 por grupo
La administración de licencias basada en grupos simplifica el proceso de asignación de licencias a los usuarios al permitir a los administradores asignar licencias según la membresía del grupo en lugar de usuarios individuales. Esto es particularmente beneficioso en organizaciones grandes con numerosos usuarios. Además, sería útil cuando desee asignar licencias a usuarios según sus funciones y requisitos.
Cuando asigna una o más licencias a un grupo, esas licencias se asignarán a todos los miembros del grupo. Para realizar una asignación de licencias basada en grupos, puede utilizar el cmdlet Set-MgGroupLicense.
Set-MgGroupLicense -GroupId <GroupId> -AddLicenses @{SkuId = <SkuId>} -RemoveLicenses @()Por ejemplo,
Set-MgGroupLicense -GroupId bb804f5e-d3a3-41af-8b16-7fd51f68be9c -AddLicenses @{SkuId = 'f30db892-07e9-47e9-837c-80727f46fd3d'} -RemoveLicenses @()En GroupId, debe pasar el GUID del grupo. Para encontrar la identificación del grupo, puede usar el cmdlet Get-MgGroup.
Después de asignar licencias a usuarios a través de un grupo, debe monitorearlos para asegurarse de que solo los grupos autorizados y sus miembros tengan acceso. La forma más sencilla de hacerlo es confiar en el script de PowerShell que exporta todas las asignaciones de licencias basadas en grupos de los usuarios de Office 365.
Asignación de licencia de M365: errores comunes y sugerencias para la solución de problemas
1. Set-MgUserLicense: la asignación de licencia no se puede realizar para un usuario con una ubicación de uso no válida.
Razón: Cuando asigna una licencia de Microsoft 365 a un usuario cuya ubicación de uso no es válida o no está configurada, recibirá el error anterior.
Solución: en tales casos, puede configurar la ubicación de uso para el usuario de Microsoft 365 mediante el siguiente cmdlet.
Update-MgUser -UserId <UPN> –UsageLocation <UsageLocation>2. Set-MgUserLicense: privilegios insuficientes para completar la operación.
Motivo: Incluso si es administrador global, es posible que encuentre el error anterior al intentar conectarse a Microsoft Graph PowerShell sin el alcance requerido.
Solución: Debe especificar el alcance correctamente para poder realizar la asignación de licencia sin ningún error.
- Para realizar una asignación de licencia basada en usuario, conéctese a MS Graph utilizando el siguiente alcance.
Connect-Graph -Scopes User.ReadWrite.All, Organization.Read.All- Para realizar una asignación de licencias basada en grupos, utilice el siguiente alcance.
Connect-MgGraph -Scopes "User.Read.All", "Directory.Read.All", "Group.ReadWrite.All"3. La licencia de usuario se hereda de la membresía de un grupo y no se puede eliminar directamente del usuario.
Razón: Al intentar cambiar de una licencia basada en grupo a una licencia basada en usuario o al eliminar una licencia de un usuario, es posible que encuentre este error. No puede eliminar directamente las licencias que un usuario hereda de un grupo.
Solución: Debe eliminar al usuario del grupo que sirve como origen de la licencia heredada. También puede utilizar el informe de ruta de asignación de licencias de usuario de M365 para comparar las licencias asignadas directamente con las asignadas a través de un grupo para tomar las acciones necesarias.
4. CountViolation: no hay suficientes licencias.
Motivo: Cuando automatiza la asignación de licencias mediante licencias basadas en grupos, es posible que se produzca este error. Este problema surge cuando no hay suficientes licencias disponibles para uno de los productos incluidos en el grupo.
Solución: Puede comprar más licencias para el producto o reclamar licencias no utilizadas de otros usuarios o grupos.
5. Violación mutuamente exclusiva: planes de servicio en conflicto.
Motivo: Ciertos planes de servicio están diseñados para ser mutuamente excluyentes, lo que impide la asignación simultánea al mismo usuario.
Por ejemplo, el plan 1 y el plan 2 de Exchange Online anteriores eran únicos y no se podían asignar al mismo usuario. Sin embargo, ha habido un cambio reciente que permite la duplicación.
Solución: El administrador debe decidir cuál asignar y cuál eliminar.
Hay algunos errores más como "DependencyViolation", "ProhibitedInUsageLocationViolation", "Se produjeron uno o más errores", etc. Incluso si encuentra otros errores, compártalos con nosotros y lo guiaremos con la solución.
Supongamos que es un novato en PowerShell y siente que es difícil captar los cmdlets, scripts y errores; puede asignar licencias a usuarios masivos utilizando la herramienta Microsoft365DSC.
Obtenga informes de licencia de Microsoft 365 gratuitos con AdminDroid:
Cuando se trata de la asignación de licencias, se puede lograr con sólo una o dos líneas de código de PowerShell. Sin embargo, los informes de licencias son una historia diferente, ya que requieren un bloque de código para generar el informe en el formato requerido. Para cerrar esta brecha, AdminDroid ofrece una herramienta de informes gratuita de Microsoft 365 para obtener informes en los formatos deseados. Ofrece varios paneles y más de 120 informes gratuitos de Office 365, incluidos informes completos de licencias. A continuación se muestran algunos de los informes de licencia de M365 disponibles en la categoría gratuita.
Informes de usuarios y licencias.
- Usuarios con licencia
- Usuarios sin licencia
- Licencias recuperables
- Usuarios con suscripción específica
- Usuarios con suscripción gratuita y de prueba
Auditar cambios de licencia
- Asignación de licencia de auditoría
- Eliminación de licencia de auditoría
Informes de vencimiento de licencia
- Usuarios que vencen la suscripción comprada
- Usuarios con suscripción comprada caducada
- Prueba vencida y usuarios caducados
- Usuarios con suscripción suspendida
Informes de suscripción
- Informe de uso de suscripción
- Suscripción caducada
- Suscripción no utilizada
- Suscripción comprada
- Suscripción de prueba
¿Por qué AdminDroid es la mejor opción para los informes de licencias de Microsoft 365?
- Programa y envía informes al correo electrónico
- Exporta datos en varios formatos, como CSV, HTML, PDF, etc.
- Filtra datos para generar informes detallados
- Visualiza los datos del informe en cuadros/gráficos generados por IA
- Administra varios inquilinos
- Ofrece una interfaz de usuario fácil de usar
- Incluye informes de licencia y más de 120 informes de Azure AD accesibles en la propia edición gratuita.
Además, AdminDroid proporciona más de 1800 informes prediseñados y más de 30 paneles para saber más sobre su entorno de Microsoft de un vistazo. Descargue AdminDroid ahora y sea testigo de la gestión sencilla de Microsoft 365.
Espero que este blog lo oriente sobre varios escenarios de asignación de licencias de Microsoft 365. Microsoft también presentó el portal de utilización de licencias de Entra, que le permite ver el uso de la licencia de Entra y el uso de funciones clave asociadas con el tipo de licencia. Además, Microsoft planea incluir el uso de otros SKU en este portal. Con esto, podrá gestionar todas sus licencias de Entra de forma eficaz. Si tiene algún otro requisito, comuníquese con nosotros a través de la sección de comentarios. Estaremos encantados de ayudarle.

