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.
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 CurrentUserem 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
- Conectar ao Microsoft Graph
Abra o PowerShell como administrador. ExecuteConnect-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. - Encontrar o SKU ID do Copilot
ExecuteGet-MgSubscribedSku | Select-Object SkuPartNumber, SkuId. Procure a entrada ondeSkuPartNumbercontém Microsoft 365 Copilot ou Copilot. Copie o valor deSkuId— parece um GUID comocfq7ttc0lg0z(exemplo). Salve-o como uma variável:$copilotSkuId = "SEU_SKU_ID". - Preparar a lista de usuários
Crie um arquivo CSV chamadousuarios.csvcom uma colunaUserPrincipalName. Liste cada usuário em uma linha separada. Exemplo de conteúdo:usuario1@contoso.comusuario2@contoso.com
Importe a lista para o PowerShell:$usuarios = Import-Csv -Path "C:\caminho\para\usuarios.csv" - 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 } } - Verificar a remoção
Após a conclusão do script, verifique alguns usuários executandoGet-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.
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.