Como Remover Licenças do Copilot em Lote com PowerShell
🔍 WiseChecker

Como Remover Licenças do Copilot em Lote com PowerShell

Se sua organização atribuiu licenças do Microsoft Copilot a centenas ou milhares de usuários e você precisa recuperá-las, o centro de administração do Microsoft 365 é muito lento. Você precisa de um método de remoção em lote que funcione rápido e sem erros. A causa raiz desse problema é que as licenças do Copilot são atribuídas por usuário através de licenciamento baseado em grupo do Azure Active Directory ou atribuição direta, e não há uma única opção para removê-las de uma vez. Este artigo explica como usar o PowerShell para remover licenças do Copilot de vários usuários em um único script, economizando horas de trabalho manual.

Principais Conclusões: Remoção em Lote de Licenças com PowerShell

  • Connect-MgGraph -Scopes “User.ReadWrite.All”, “Organization.Read.All”: Necessário para autenticar e modificar licenças de usuários via Microsoft Graph.
  • Get-MgUserLicenseDetail -UserId: Recupera o SKU ID exato da licença do Copilot atribuída a cada usuário.
  • Set-MgUserLicense -UserId -AddLicenses @() -RemoveLicenses @(“SKU_ID”): O comando que remove a licença do Copilot de um único usuário ou de uma matriz de usuários.

ADVERTISEMENT

Como Funciona a Atribuição de Licenças do Copilot no Microsoft 365

O Microsoft Copilot para Microsoft 365 é licenciado como um SKU complementar. O nome do SKU varia conforme o plano: por exemplo, Microsoft 365 Copilot usa o SKU ID CFQ7TTC0LG0Z em alguns locatários, mas o nome real do produto no Azure AD é Microsoft 365 Copilot com um GUID específico. Quando você atribui uma licença do Copilot a um usuário, o Azure AD registra a atribuição na propriedade assignedLicenses do usuário. Para remover a licença, você precisa saber o SKU ID (também chamado de product ID) desse plano do Copilot. Você pode encontrá-lo executando Get-MgSubscribedSku no SDK do PowerShell do Microsoft Graph. O script de remoção em lote percorre uma lista de usuários, recupera as licenças atuais de cada um e remove apenas o SKU do Copilot, deixando as outras licenças intactas.

Pré-requisitos

Antes de executar qualquer comando PowerShell, você precisa:

  • Ter o módulo do PowerShell do Microsoft Graph instalado. Execute Install-Module Microsoft.Graph -Scope CurrentUser em uma janela do PowerShell elevada.
  • Uma função de Administrador Global ou Administrador de Licenças no Microsoft Entra ID.
  • Uma lista de usuários com licenças do Copilot. Você pode exportá-la do centro de administração do Microsoft 365 ou gerá-la a partir de um arquivo CSV.

Passos para Remover Licenças do Copilot em Lote com PowerShell

  1. Conectar ao Microsoft Graph
    Abra o PowerShell como administrador. Execute Connect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All". Faça login com sua conta de administrador quando solicitado. Isso estabelece a sessão necessária para ler e modificar as atribuições de licença dos usuários.
  2. Encontrar o SKU ID do Copilot
    Execute Get-MgSubscribedSku | Select-Object SkuPartNumber, SkuId. Procure a entrada onde SkuPartNumber contém Microsoft 365 Copilot ou Copilot. Copie o valor de SkuId — parece um GUID como cfq7ttc0lg0z (exemplo). Salve-o como uma variável: $copilotSkuId = "SEU_SKU_ID".
  3. Preparar a lista de usuários
    Crie um arquivo CSV chamado usuarios.csv com uma coluna UserPrincipalName. Liste cada usuário em uma linha separada. Exemplo de conteúdo:
    usuario1@contoso.com
    usuario2@contoso.com
    Importe a lista para o PowerShell: $usuarios = Import-Csv -Path "C:\caminho\para\usuarios.csv"
  4. Percorrer cada usuário e remover a licença do Copilot
    Execute o seguinte bloco de script:
    foreach ($usuario in $usuarios) {
        $userId = $usuario.UserPrincipalName
        $licencasAtuais = Get-MgUserLicenseDetail -UserId $userId
        $licencaCopilot = $licencasAtuais | Where-Object { $_.SkuId -eq $copilotSkuId }
        if ($licencaCopilot) {
            Set-MgUserLicense -UserId $userId -AddLicenses @() -RemoveLicenses @($copilotSkuId)
            Write-Host "Licença do Copilot removida de $userId" -ForegroundColor Green
        } else {
            Write-Host "Nenhuma licença do Copilot encontrada para $userId" -ForegroundColor Yellow
        }
    }
  5. Verificar a remoção
    Após a conclusão do script, verifique alguns usuários executando Get-MgUserLicenseDetail -UserId "usuario@contoso.com" | Select-Object SkuPartNumber. Confirme que o SKU do Copilot não aparece mais. Você também pode verificar no centro de administração do Microsoft 365 em Usuários > Usuários ativos e selecionar um usuário para ver a guia de licenças.

ADVERTISEMENT

Problemas Comuns ao Remover Licenças em Lote

O script retorna um erro de acesso negado

Isso acontece quando a conta usada para conectar ao Microsoft Graph não tem as permissões necessárias. Certifique-se de ter os escopos User.ReadWrite.All e Organization.Read.All. Reconecte com Disconnect-MgGraph e depois Connect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All". Verifique também sua função de administrador no centro de administração do Microsoft Entra em Funções e administradores.

O SKU ID não é encontrado no Get-MgSubscribedSku

Se o SKU do Copilot não aparecer, seu locatário pode usar um nome de produto diferente. Execute Get-MgSubscribedSku | Format-Table SkuPartNumber, SkuId e procure qualquer entrada contendo COPILOT ou M365_COPILOT. Em alguns locatários, o SkuPartNumber é M365_COPILOT. Use o SkuId correspondente.

O script remove a licença errada de um usuário

Isso pode ocorrer se a variável $copilotSkuId contiver um GUID incorreto. Verifique novamente o SKU ID comparando-o com a saída de Get-MgSubscribedSku. Além disso, o script remove apenas licenças que correspondem exatamente ao SKU ID fornecido. Se um usuário tiver várias licenças, as outras permanecem inalteradas.

Remoção em Lote com PowerShell vs Remoção Manual no Centro de Administração

Item Remoção em Lote com PowerShell Remoção Manual no Centro de Administração
Tempo para remover 500 licenças 2-5 minutos 2-4 horas
Tratamento de erros Integrado com blocos try-catch Nenhum — é preciso refazer etapas com falha
Trilha de auditoria Transcrição do PowerShell ou saída Write-Host Registro manual necessário
Requer função de administrador Administrador Global ou Administrador de Licenças Administrador Global ou Administrador de Licenças
Suporte a licenciamento baseado em grupo Sim, com comandos adicionais Não — é necessário remover o usuário do grupo

Para organizações com mais de 50 usuários, a remoção em lote com PowerShell é o método mais rápido e confiável. A abordagem manual no centro de administração funciona para remoções pontuais, mas não escala bem.

Agora você pode remover licenças do Copilot de qualquer número de usuários usando o script PowerShell fornecido. Para estender esse processo, considere automatizá-lo com Azure Automation ou um runbook agendado. Como dica avançada, use o parâmetro -WhatIf com Set-MgUserLicense antes de executar a remoção real para visualizar quais licenças seriam removidas.

ADVERTISEMENT