Remover Microsoft 365 licenças de contas de usuário com o PowerShell

Este artigo se aplica tanto ao Microsoft 365 Enterprise quanto ao Office 365 Enterprise.

Observação

Saiba como remover licenças de 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.

Usar o SDK do Microsoft Graph PowerShell

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

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" API do Graph referência.

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

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

Para exibir as informações do plano de licenciamento em sua organização, consulte os seguintes tópicos:

Removendo licenças de contas de usuário

Para remover licenças de uma conta de usuário existente, use a seguinte sintaxe:

Set-MgUserLicense -UserId "<Account>" -RemoveLicenses @("<AccountSkuId1>") -AddLicenses @{}

Este exemplo remove o plano SPE_E5 (Microsoft 365 E5) do usuário BelindaN@litwareinc.com:

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

Para remover todas as licenças de um grupo de usuários licenciados existentes, use a seguinte sintaxe:

$licensedUsers = Get-MgUser -Filter 'assignedLicenses/$count ne 0' `
    -ConsistencyLevel eventual -CountVariable licensedUserCount -All `
    -Select UserPrincipalName,DisplayName,AssignedLicenses

foreach($user in $licensedUsers)
{
    $licencesToRemove = $user.AssignedLicenses | Select -ExpandProperty SkuId
    $user = Set-MgUserLicense -UserId $user.UserPrincipalName -RemoveLicenses $licencesToRemove -AddLicenses @{} 
}

Outra maneira de liberar uma licença é excluir a conta de usuário. Para obter mais informações, consulte Excluir e restaurar contas de usuário com o PowerShell.

Use o PowerShell do Azure Active Directory para o módulo do gráfico

O Set-AzureADUserLicense cmdlet está agendado para ser desativado. Migre seus scripts para o cmdlet Graph SDK do Microsoft Set-MgUserLicense, conforme descrito acima. Para obter mais informações, consulte Migrar seus aplicativos para acessar as APIs de gerenciamento de licença do Microsoft Graph.

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

Em seguida, liste os planos de licença para seu locatário com este comando.

Get-AzureADSubscribedSku | Select SkuPartNumber

Em seguida, obtenha o nome de entrada da conta para a qual você deseja remover uma licença, também conhecida como NOME UPN.

Por fim, especifique os nomes do plano de licença e de entrada do usuário, remova os caracteres "<" e ">" e execute esses comandos.

$userUPN="<user sign-in name (UPN)>"
$planName="<license plan name from the list of license plans>"
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$license.RemoveLicenses = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $planName -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $license

Para remover todas as licenças de uma conta de usuário específica, especifique o nome de entrada do usuário, remova os caracteres "<" e ">" e execute esses comandos.

$userUPN="<user sign-in name (UPN)>"
$userList = Get-AzureADUser -ObjectID $userUPN
$Skus = $userList | Select -ExpandProperty AssignedLicenses | Select SkuID
if($userList.Count -ne 0) {
    if($Skus -is [array])
    {
        $licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
        for ($i=0; $i -lt $Skus.Count; $i++) {
            $licenses.RemoveLicenses +=  (Get-AzureADSubscribedSku | Where-Object -Property SkuID -Value $Skus[$i].SkuId -EQ).SkuID   
        }
        Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
    } else {
        $licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
        $licenses.RemoveLicenses =  (Get-AzureADSubscribedSku | Where-Object -Property SkuID -Value $Skus.SkuId -EQ).SkuID
        Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
    }
}

Use o Módulo Microsoft Azure Active Directory para Windows PowerShell.

Observação

Os cmdlets Set-MsolUserLicense e New-MsolUser (-LicenseAssignment) estão agendados para serem desativados. Migre seus scripts para o cmdlet Graph SDK do Microsoft Set-MgUserLicense, conforme descrito acima. Para obter mais informações, consulte Migrar seus aplicativos para acessar as APIs de gerenciamento de licença do Microsoft Graph.

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

Para exibir as informações do plano de licenciamento (AccountSkuID) em sua organização, confira os tópicos a seguir:

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

Removendo licenças de contas de usuário

Para remover licenças de uma conta de usuário existente, use a seguinte sintaxe:

Set-MsolUserLicense -UserPrincipalName <Account> -RemoveLicenses "<AccountSkuId1>", "<AccountSkuId2>"...

Observação

O PowerShell Core não é compatível com o módulo do Microsoft Azure Active Directory para módulo e cmdlets do Windows PowerShell com MSol no nome. Para continuar usando esses cmdlets, você deve executá-los a partir do Windows PowerShell.

Este exemplo remove a licença litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) da conta de usuário BelindaN@litwareinc.com.

Set-MsolUserLicense -UserPrincipalName belindan@litwareinc.com -RemoveLicenses "litwareinc:ENTERPRISEPACK"

Observação

Você não pode usar o Set-MsolUserLicense cmdlet para cancelar a atribuição de usuários de licenças canceladas . Você deve fazer isso individualmente para cada conta de usuário no Centro de administração do Microsoft 365.

Para remover todas as licenças de um grupo de usuários licenciados existentes, use um dos seguintes métodos:

  • Filtrar as contas com base em um atributo de conta existente Para fazer isso, use a seguinte sintaxe:
$userArray = Get-MsolUser -All <FilterableAttributes> | where {$_.isLicensed -eq $true}
for ($i=0; $i -lt $userArray.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $userArray[$i].UserPrincipalName -RemoveLicenses $userArray[$i].licenses.accountskuid
}

Este exemplo remove todas as licenças de todas as contas de usuário no departamento de Vendas no Estados Unidos.

$userArray = Get-MsolUser -All -Department "Sales" -UsageLocation "US" | where {$_.isLicensed -eq $true}
for ($i=0; $i -lt $userArray.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $userArray[$i].UserPrincipalName -RemoveLicenses $userArray[$i].licenses.accountskuid
}
  • Usar uma lista de contas específicas para uma licença específica Para fazer isso, execute as seguintes etapas:
  1. Crie e salve um arquivo de texto que contenha uma conta em cada linha da seguinte forma:
akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com
  1. Use a sintaxe a seguir:
$x=Get-Content "<FileNameAndPath>"
for ($i=0; $i -lt $x.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $x[$i] -RemoveLicenses "<AccountSkuId1>","<AccountSkuId2>"...
}

Este exemplo remove a licença litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) das contas de usuário definidas no arquivo de texto C:\My Documents\Accounts.txt.

$x=Get-Content "C:\My Documents\Accounts.txt"
for ($i=0; $i -lt $x.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $x[$i] -RemoveLicenses "litwareinc:ENTERPRISEPACK"
}

Para remover todas as licenças de todas as contas de usuário existentes, use a seguinte sintaxe:

$userArray = Get-MsolUser -All | where {$_.isLicensed -eq $true}
for ($i=0; $i -lt $userArray.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $userArray[$i].UserPrincipalName -RemoveLicenses $userArray[$i].licenses.accountskuid
}

Outra maneira de liberar uma licença é excluir a conta de usuário. Para obter mais informações, consulte Excluir e restaurar contas de usuário com o PowerShell.

Confira também

Gerenciar contas de usuário, licenças e grupos do Microsoft 365 com o PowerShell

Gerenciar o Microsoft 365 com o PowerShell

Introdução ao PowerShell para o Microsoft 365