Atribuir licenças do Microsoft 365 a contas de usuário com o PowerShell

Esse artigo se aplica ao Microsoft 365 Enterprise e ao Office 365 Enterprise.

Os usuários não podem usar nenhum serviço do Microsoft 365 até que sua conta tenha recebido uma licença de um plano de licenciamento. Você pode usar o PowerShell para atribuir rapidamente licenças a contas não licenciados.

As contas de usuário devem primeiro ser atribuídas a um local. Especificar um local é uma parte necessária da criação de uma nova conta de usuário no Centro de administração do Microsoft 365.

As contas sincronizadas do seu Active Directory local Domain Services não têm, por padrão, um local especificado. Você pode configurar um local para essas contas de:

  • O Centro de administração do Microsoft 365
  • PowerShell
  • O portal do Azure (conta > de usuáriousuários>do Active Directory>Perfil>Contact info>País ou região).

Observação

Saiba como atribuir licenças a contas de usuário com o Centro de administração do Microsoft 365. Para obter uma lista de recursos adicionais, consulte Gerenciar usuários e grupos.

Atribuir licenças do Microsoft 365 a contas de usuário com o SDK do Microsoft Graph PowerShell

Observação

O script a seguir usa o Microsoft Graph Powershell. Para obter mais informações, confira Visão geral do Microsoft Graph PowerShell.

Para obter informações sobre como usar métodos diferentes para se autenticar Connect-Graph em um script autônomo, confira o artigo Cmdlets do módulo de autenticação no Microsoft Graph PowerShell.

Primeiro, conecte-se ao locatário do Microsoft 365.

Atribuir e remover licenças para um usuário requer o escopo de permissão User.ReadWrite.All ou uma das outras permissões listadas na página de referência "Atribuir licença" do Microsoft API do Graph.

O escopo de permissão Organization.Read.All é necessário para ler as licenças disponíveis no locatário.

Connect-MgGraph -Scopes User.ReadWrite.All, Organization.Read.All

Execute o Get-MgSubscribedSku comando para exibir os planos de licenciamento disponíveis e o número de licenças disponíveis em cada plano em sua organização. O número de licenças disponíveis em cada plano é ActiveUnits - WarningUnits - ConsumedUnits. Para obter mais informações sobre planos de licenciamento, licenças e serviços, confira Exibir licenças e serviços com o PowerShell.

Para localizar as contas não habilitadas em sua organização, execute este comando.

Get-MgUser -Filter 'assignedLicenses/$count eq 0' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All

Para localizar os usuários sincronizados não autorizados em sua organização, execute este comando.

Get-MgUser -Filter 'assignedLicenses/$count eq 0 and OnPremisesSyncEnabled eq true' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All -Select UserPrincipalName

Você só pode atribuir licenças a contas de usuário que têm a propriedade UseLocation definida como um código de país iso 3166-1 alfa-2 válido. Por exemplo, US para os Estados Unidos e FR para a França. Alguns serviços do Microsoft 365 não estão disponíveis em determinados países/regiões. Para obter mais informações, consulte Sobre restrições de licença.

Para localizar contas que não têm um valor UseLocation , execute este comando.

Get-MgUser -Select Id,DisplayName,Mail,UserPrincipalName,UsageLocation,UserType | where { $_.UsageLocation -eq $null -and $_.UserType -eq 'Member' }

Para definir o valor UseLocation em uma conta, execute este comando.

$userUPN="<user sign-in name (UPN)>"
$userLoc="<ISO 3166-1 alpha-2 country code>"

Update-MgUser -UserId $userUPN -UsageLocation $userLoc

Por exemplo:

Update-MgUser -UserId "belindan@litwareinc.com" -UsageLocation US

Se você usar o cmdlet Get-MgUser sem usar o parâmetro -All , somente as primeiras 100 contas serão retornadas.

Atribuir licenças a contas de usuário

Para atribuir uma licença a um usuário, use o comando a seguir no PowerShell.

Set-MgUserLicense -UserId $userUPN -AddLicenses @{SkuId = "<SkuId>"} -RemoveLicenses @()

Este exemplo atribui uma licença do plano de licenciamento SPE_E5 (Microsoft 365 E5) ao usuário belindan@litwareinc.comnão licenciado :

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()

Este exemplo atribui SPE_E5 (Microsoft 365 E5) e EMSPREMIUM (ENTERPRISE MOBILITY + SECURITY E5) ao usuário belindan@litwareinc.com:

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$e5EmsSku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'EMSPREMIUM'
$addLicenses = @(
    @{SkuId = $e5Sku.SkuId},
    @{SkuId = $e5EmsSku.SkuId}
)

Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()

Este exemplo atribui SPE_E5 (Microsoft 365 E5) com os serviços MICROSOFTBOOKINGS (Microsoft Bookings) e LOCKBOX_ENTERPRISE (Customer Lockbox) desativados:

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$disabledPlans = $e5Sku.ServicePlans | `
    Where ServicePlanName -in ("LOCKBOX_ENTERPRISE", "MICROSOFTBOOKINGS") | `
    Select -ExpandProperty ServicePlanId

$addLicenses = @(
    @{
        SkuId = $e5Sku.SkuId
        DisabledPlans = $disabledPlans
    }
)

Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()

Este exemplo atualiza um usuário com SPE_E5 (Microsoft 365 E5) e desativa os planos de serviço Sway e Forms, deixando os planos desabilitados existentes do usuário em seu estado atual:

$userLicense = Get-MgUserLicenseDetail -UserId "belinda@litwareinc.com"
$userDisabledPlans = $userLicense.ServicePlans | `
    Where ProvisioningStatus -eq "Disabled" | `
    Select -ExpandProperty ServicePlanId

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$newDisabledPlans = $e5Sku.ServicePlans | `
    Where ServicePlanName -in ("SWAY", "FORMS_PLAN_E5") | `
    Select -ExpandProperty ServicePlanId

$disabledPlans = ($userDisabledPlans + $newDisabledPlans) | Select -Unique

$addLicenses = @(
    @{
        SkuId = $e5Sku.SkuId
        DisabledPlans = $disabledPlans
    }
)

Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()

Este exemplo atualiza um usuário com SPE_E5 (Microsoft 365 E5) e desativa os planos de serviço Sway e Forms, deixando os planos desabilitados existentes do usuário em todas as outras assinaturas em seu estado atual:

$userLicense = Get-MgUserLicenseDetail -UserId belinda@litwareinc.com

$userDisabledPlans = $userLicense.ServicePlans | Where-Object ProvisioningStatus -eq "Disabled" | Select -ExpandProperty ServicePlanId

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'

$newDisabledPlans = $e5Sku.ServicePlans | Where ServicePlanName -in ("SWAY", "FORMS_PLAN_E5") | Select -ExpandProperty ServicePlanId

$disabledPlans = ($userDisabledPlans + $newDisabledPlans) | Select -Unique

$result=@()
$allPlans = $e5Sku.ServicePlans | Select -ExpandProperty ServicePlanId

foreach($disabledPlan in $disabledPlans)
{
    foreach($allPlan in $allPlans)
    {
        if($disabledPlan -eq $allPlan)
        {
            $property = @{
                Disabled = $disabledPlan
            }
        }
     }
     $result += New-Object psobject -Property $property
}


$finalDisabled = $result | Select-Object -ExpandProperty Disabled


$addLicenses = @(
    @{
        SkuId = $e5Sku.SkuId
        DisabledPlans = $finalDisabled
    }
)


Set-MgUserLicense -UserId belinda@litwareinc.com -AddLicenses $addLicenses -RemoveLicenses @()

Atribuir licenças a um usuário copiando a atribuição de licença de outro usuário

Este exemplo atribui jamesp@litwareinc.com com o mesmo plano de licenciamento que foi aplicado a belindan@litwareinc.com:

$mgUser = Get-MgUser -UserId "belindan@litwareinc.com" -Property AssignedLicenses
Set-MgUserLicense -UserId "jamesp@litwareinc.com" -AddLicenses $mgUser.AssignedLicenses -RemoveLicenses @()

Mover um usuário para uma assinatura diferente (plano de licença)

Este exemplo atualiza um usuário do plano de licenciamento SPE_E3 (Microsoft 365 E3) para o plano de licenciamento SPE_E5 (Microsoft 365 E5):

$e3Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E3'
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'

# Unassign E3
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{} -RemoveLicenses @($e3Sku.SkuId)
# Assign E5
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()

Você pode verificar a alteração na assinatura da conta de usuário com esse comando.

Get-MgUserLicenseDetail -UserId "belindan@litwareinc.com"

Confira também

Gerenciar o Microsoft 365 com o PowerShell

Gerenciar o Microsoft 365 com o PowerShell

Comece a usar o SDK do Microsoft Graph PowerShell

Usar o usuário do Microsoft Graph: atribuir APIs Desatribuídas e deSku