Atribuir licenças do Microsoft 365 Copilot para centenas ou milhares de usuários um por um no centro de administração é lento e propenso a erros. A atribuição em lote via PowerShell economiza tempo e reduz falhas. Este artigo explica como usar o SDK do Microsoft Graph PowerShell para atribuir licenças do Copilot a vários usuários de uma vez usando um arquivo CSV ou associação a grupo. Você aprenderá os comandos exatos, as permissões necessárias e como lidar com erros comuns durante a atribuição em lote de licenças.
Principais conclusões: Atribuir licenças do Copilot em lote com PowerShell
- Módulo Microsoft Graph PowerShell SDK: Necessário para conectar ao seu locatário e executar comandos de atribuição de licenças.
- Connect-MgGraph -Scopes User.ReadWrite.All, Organization.Read.All: Escopos necessários para ler contas de usuário e atribuir licenças.
- Set-MgUserLicense -UserId <usuário> -AddLicenses <sku>: Cmdlet principal que adiciona uma licença do Copilot a um único usuário.
- Arquivo CSV com coluna UserPrincipalName: O formato de entrada usado para percorrer vários usuários e atribuir licenças em lote.
Entendendo os SKUs de Licença do Copilot e Pré-requisitos
Antes de atribuir licenças, você precisa do identificador SKU correto para seu plano do Copilot. O Microsoft 365 Copilot usa o nome SKU SPE_E5 ou Microsoft_365_Copilot dependendo da região do seu locatário e do tipo de oferta. Para encontrar o SKU exato do seu locatário, execute o comando Get-MgSubscribedSku após conectar-se ao Microsoft Graph. A saída mostra a propriedade SkuPartNumber de cada SKU. Os nomes de SKU comuns do Copilot incluem:
- SPE_E5 – Microsoft 365 E5 Copilot
- Microsoft_365_Copilot – Microsoft 365 Copilot autônomo
- COPILOT_STUDENT – Copilot para Microsoft 365 para estudantes
Você também precisa dos seguintes pré-requisitos:
- SDK do Microsoft Graph PowerShell instalado. Instale com
Install-Module Microsoft.Graph -Scope CurrentUser. - Função de Administrador Global ou Administrador de Licenças no Microsoft Entra ID.
- Um arquivo CSV listando os usuários que precisam da licença do Copilot. O arquivo deve incluir uma coluna chamada UserPrincipalName.
- Licenças do Copilot disponíveis suficientes no seu locatário. Verifique no centro de administração do Microsoft 365 em Cobrança > Licenças.
Passos para Atribuir Licenças do Copilot em Lote com PowerShell
Siga estes passos para atribuir licenças do Copilot a vários usuários a partir de um arquivo CSV. Cada passo inclui o comando PowerShell exato a ser executado.
- Conectar ao Microsoft Graph
Abra o PowerShell como administrador. ExecuteConnect-MgGraph -Scopes User.ReadWrite.All, Organization.Read.All. Uma janela do navegador será aberta. Faça login com uma conta de Administrador Global ou Administrador de Licenças. Após o login bem-sucedido, o prompt do PowerShell mostrará Welcome to Microsoft Graph!. - Encontrar o ID do SKU do Copilot
ExecuteGet-MgSubscribedSku | Select-Object SkuPartNumber, SkuId, ConsumedUnits, PrepaidUnits. Procure a linha onde SkuPartNumber corresponde ao seu plano do Copilot. Copie o valor de SkuId. É um GUID como184efa21-94c3-4e26-8e13-2b50e88f0e5f. - Preparar o arquivo CSV
Crie um arquivo CSV chamado CopilotUsers.csv com este conteúdo exato (substitua pelos nomes UPN reais):UserPrincipalName
user1@contoso.com
user2@contoso.com
user3@contoso.com
Salve o arquivo em C:\Scripts\CopilotUsers.csv. - Executar o script de atribuição em lote
Execute este script na mesma sessão do PowerShell:$users = Import-Csv -Path "C:\Scripts\CopilotUsers.csv"
$skuId = "SEU-SKU-ID-AQUI"
foreach ($user in $users) {
$upn = $user.UserPrincipalName
Set-MgUserLicense -UserId $upn -AddLicenses @{SkuId = $skuId} -RemoveLicenses @()
Write-Host "Licença atribuída a $upn" -ForegroundColor Green
}
SubstituaSEU-SKU-ID-AQUIpelo GUID copiado no passo 2. O script percorre cada usuário no CSV e atribui a licença do Copilot. Mensagens de confirmação verdes aparecem para cada sucesso. - Verificar as atribuições
ExecuteGet-MgUser -UserId user1@contoso.com -Property AssignedLicenses | Select-Object -ExpandProperty AssignedLicenses. Verifique se o SkuId corresponde ao SKU do Copilot. Repita para alguns usuários do CSV para confirmar que todas as atribuições foram bem-sucedidas.
Atribuir Licenças do Copilot com Base em Associação a Grupo
Se preferir atribuir licenças a todos os membros de um grupo de segurança, use este método alternativo. Primeiro, obtenha o ID do objeto do grupo no centro de administração do Microsoft Entra. Depois execute:
$groupId = "ID-DO-SEU-GRUPO"
$skuId = "SEU-SKU-ID-AQUI"
$members = Get-MgGroupMember -GroupId $groupId -All
foreach ($member in $members) {
Set-MgUserLicense -UserId $member.Id -AddLicenses @{SkuId = $skuId} -RemoveLicenses @()
Write-Host "Licença atribuída a $($member.Id)" -ForegroundColor Green
}
Substitua os placeholders pelo ID do grupo e pelo SKU ID. Este método não requer um arquivo CSV e inclui automaticamente novos membros do grupo quando você executa o script novamente.
Erros Comuns na Atribuição em Lote de Licenças e Correções
“Insufficient privileges to complete the operation”
Este erro significa que sua conta não tem a função de administrador necessária. Faça login com uma conta de Administrador Global ou Administrador de Licenças. Para verificar sua função atual, execute (Get-MgContext).Scopes e verifique se User.ReadWrite.All aparece na lista.
“License could not be assigned because the user already has the license”
O script tenta atribuir uma licença que o usuário já possui. Para pular esses usuários, adicione uma condição if antes da atribuição. Primeiro, verifique as licenças atuais do usuário com Get-MgUserLicenseDetail -UserId $upn. Se o SKU ID já existir, pule esse usuário.
“The license SKU is not available in this tenant”
Você usou um SKU ID incorreto. Execute Get-MgSubscribedSku novamente e confirme o SkuPartNumber exato para o Copilot. Copie o valor SkuId correspondente. Se você não vir nenhum SKU do Copilot, compre licenças primeiro no centro de administração do Microsoft 365 em Cobrança > Comprar serviços.
“User not found”
O UserPrincipalName no CSV não corresponde a nenhum usuário no seu locatário. Abra o CSV e verifique cada endereço de e-mail. Use Get-MgUser -Filter "UserPrincipalName eq 'user@contoso.com'" para testar entradas individuais. Corrija quaisquer erros de digitação e execute o script novamente.
PowerShell em Lote vs Centro de Administração: Principais Diferenças
| Item | Método PowerShell em Lote | Centro de Administração Microsoft 365 |
|---|---|---|
| Tempo para atribuir 500 licenças | 2-5 minutos | 30-60 minutos |
| Tratamento de erros | Manual com blocos try-catch | Tentativa automática para atribuições com falha |
| Entrada CSV ou grupo | Arquivo CSV ou ID do objeto do grupo | Seleção manual de usuários ou upload de CSV |
| Log de auditoria | Saída Write-Host ou exportação para arquivo | Log de atividades integrado no centro de administração |
| Requer função de administrador | Administrador Global ou Administrador de Licenças | Administrador Global ou Administrador de Licenças |
Agora você pode atribuir licenças do Copilot a centenas de usuários em minutos usando PowerShell. Comece com um pequeno grupo de teste de três usuários para verificar o SKU ID e a lógica do script. Depois, aumente para sua lista completa de usuários. Para atribuições recorrentes, como novos funcionários, salve o script como um arquivo .ps1 e execute-o semanalmente. Combine este método com licenciamento baseado em grupo no Microsoft Entra ID para automatizar a atribuição de licenças quando usuários entrarem ou saírem de grupos de segurança.