Partilhar via


Excluir usuários em massa no Microsoft Entra ID

Usando o centro de administração no Microsoft Entra ID, parte do Microsoft Entra, você pode remover um grande número de membros de um grupo usando um arquivo CSV (valores separados por vírgula) para excluir usuários em massa.

Para excluir usuários em massa

Gorjeta

As etapas neste artigo podem variar ligeiramente com base no portal a partir do qual você começou.

  1. Entre no centro de administração do Microsoft Entra como pelo menos um Administrador de Usuário.

  2. Selecione Microsoft Entra ID.

  3. Selecione Usuários>Todos os usuários>Operações>em massa Exclusão em massa.

    Captura de ecrã da página Utilizadores com a opção Eliminação em massa selecionada.

  4. Na página Excluir usuário em massa, selecione Download para baixar a versão mais recente do modelo CSV.

  5. Abra o ficheiro CSV e adicione uma linha para cada utilizador a eliminar. O único valor necessário é Nome principal do usuário. Guarde o ficheiro.

  6. Na página Excluir usuário em massa, em Carregar seu arquivo csv, navegue até o arquivo. Quando você seleciona o arquivo e clica em enviar, a validação do arquivo CSV é iniciada.

  7. Quando o conteúdo do arquivo for validado, você verá Arquivo carregado com êxito. Se houver erros, tem de os corrigir antes de poder submeter o trabalho.

  8. Quando o arquivo passar na validação, selecione Enviar para iniciar a operação em massa que exclui os usuários.

  9. Quando a operação de eliminação terminar, verá uma notificação de que a operação em massa foi bem-sucedida.

Se você tiver erros, poderá baixar e exibir o arquivo de resultados na página Resultados da operação em massa. O ficheiro contém o motivo de cada erro. O envio do arquivo deve corresponder ao modelo fornecido e incluir os nomes exatos das colunas. Para obter mais informações sobre limitações de operações em massa, consulte Limites de serviço de exclusão em massa.

Estrutura do modelo CSV

As linhas no modelo CSV de exemplo baixado abaixo são as seguintes:

  • Número da versão: A primeira linha que contém o número da versão deve ser incluída no CSV de carregamento.
  • Títulos das colunas: User name [userPrincipalName] Required. As versões mais antigas do modelo podem variar.
  • Linha de exemplos: incluímos no modelo um exemplo de um valor aceitável. Example: chris@contoso.com Você deve remover a linha de exemplo e substituí-la por suas próprias entradas.

Captura de tela do arquivo CSV contém nomes e IDs dos usuários a serem excluídos.

Orientação adicional para o modelo CSV

  • As duas primeiras linhas do modelo não devem ser removidas ou modificadas, ou o modelo não pode ser processado.
  • As colunas necessárias são listadas primeiro.
  • Não adicione novas colunas ao modelo. Todas as colunas adicionais adicionadas são ignoradas e não processadas.
  • Baixe a versão mais recente do modelo CSV antes de fazer novas alterações.

Verificar estado

Você pode ver o status de todas as suas solicitações em massa pendentes na página Resultados da operação em massa.

Captura de tela mostrando a verificação do status de exclusão na página Resultados de Operações em Massa..

Em seguida, você pode verificar se os usuários excluídos existem na organização do Microsoft Entra no portal ou usando o PowerShell.

Verificar usuários excluídos

  1. Entre no centro de administração do Microsoft Entra como pelo menos um Administrador de Usuário.
  2. Selecione Microsoft Entra ID.
  3. Selecione Somente todos os usuários e verifique se os usuários excluídos não estão mais listados.

Verificar usuários excluídos com o PowerShell

Execute o seguinte comando:

Get-MgUser -Filter "UserType eq 'Member'"

Verifique se os usuários excluídos não estão mais listados.

Limites de serviço de exclusão em massa

Você deve estar ciente de que cada atividade de operações em massa pode ser executada por até uma hora.

As operações em massa no portal de administração do Microsoft Entra podem atingir o tempo limite e falhar em locatários muito grandes. Essa limitação é um problema conhecido devido a limitações de escala. A equipe de engenharia da Microsoft está trabalhando em um novo serviço que acabará abordando essa limitação.

Nota

Ao executar operações em massa, como importar ou criar, você pode encontrar um problema se a operação em massa não for concluída dentro de uma hora. Para contornar esse problema, recomendamos dividir o número de registros processados por lote. Por exemplo, antes de iniciar uma exportação, você pode limitar o conjunto de resultados filtrando um tipo de grupo ou nome de usuário para reduzir o tamanho dos resultados. Ao refinar seus filtros, essencialmente você está limitando os dados retornados pela operação em massa.

Outra solução alternativa para esse problema é usar o PowerShell para fazer chamadas diretas à API do Microsoft Graph. Para falha de usuários e grupos de download em massa, recomendamos o uso dos cmdlets GET-MgGroup -All do PowerShell e GET-MgUser -Alldo .

Os exemplos de código do PowerShell a seguir são para operações em massa relacionadas a:

Utilizadores

Download em massa de todos os usuários

# Import the Microsoft Graph module 
Import-Module Microsoft.Graph 

# Authenticate to Microsoft Graph (you may need to provide your credentials) 
Connect-MgGraph -Scopes "User.Read.All" 

# Get all users using Get-MgUser 
$users = Get-MgUser -All -ConsistencyLevel eventual -Property Id, DisplayName, UserPrincipalName,UserType,OnPremisesSyncEnabled,CompanyName,CreationType 

# Specify the output CSV file path 
$outputCsvPath = "C:\\Users\\YourUsername\\Documents\\Users.csv"  

# Create a custom object to store user data 
$userData = @() 

# Loop through each user and collect relevant data 
foreach ($user in $users) { 
    $userObject = [PSCustomObject]@{ 
        Id = $user.Id 
        DisplayName = $user.DisplayName 
        UserPrincipalName = $user.UserPrincipalName 
        UserType = $user.UserType 
        OnPremisesSyncEnabled = $user.OnPremisesSyncEnabled 
        CompanyName = $user.CompanyName 
        CreationType = $user.CreationType 
    } 
    $userData += $userObject 
} 

# Export user data to a CSV file 
$userData | Export-Csv -Path $outputCsvPath -NoTypeInformation 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

Write-Host "User data exported to $outputCsvPath" 

Criar utilizadores em massa

# Import the Microsoft Graph module 
Import-Module Microsoft.Graph 

# Authenticate to Microsoft Graph (you may need to provide your credentials) 
Connect-MgGraph -Scopes "User.ReadWrite.All" 

# Specify the path to the CSV file containing user data 
$csvFilePath = "C:\\Path\\To\\Your\\Users.csv" 

# Read the CSV file (adjust the column names as needed) 
$usersData = Import-Csv -Path $csvFilePath 

# Loop through each row in the CSV and create users \
foreach ($userRow in $usersData) { 
    $userParams = @{ 
        DisplayName = $userRow.'Name [displayName] Required' 
        UserPrincipalName = $userRow.'User name [userPrincipalName] Required' 
        PasswordProfile = @{ 
            Password = $userRow.'Initial password [passwordProfile] Required' 
        } 
        AccountEnabled = $true 
        MailNickName = $userRow.mailNickName 
    } 
    try { 
        New-MgUser @userParams 
        Write-Host "User $($userRow.UserPrincipalName) created successfully." 
    } catch { 
        Write-Host "Error creating user $($userRow.UserPrincipalName): $($_.Exception.Message)" 
    } 
} 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

Write-Host "Bulk user creation completed." 

Nota

Verifique se o arquivo CSV contém as colunas necessárias (por exemplo, DisplayName, UserPrincipalNamee assim por diante). Além disso, ajuste o script para corresponder aos nomes de coluna reais no arquivo CSV.

Eliminar utilizadores em massa

# Import the Microsoft Graph module 
Import-Module Microsoft.Graph 

# Authenticate to Microsoft Graph (you may need to provide your credentials) 
Connect-MgGraph -Scopes "User.ReadWrite.All" 

# Specify the path to the CSV file containing user data 
$csvFilePath = "C:\\Path\\To\\Your\\Users.csv" 

# Read the CSV file (adjust the column names as needed) 
$usersData = Import-Csv -Path $csvFilePath 

# Loop through each row in the CSV and delete users 
foreach ($userRow in $usersData) { 
    try { 
        Remove-MgUser -UserId $userRow.UserPrincipalName -Confirm:$false 
        Write-Host "User $($userRow.UserPrincipalName) deleted successfully." 
    } catch { 
        Write-Host "Error deleting user $($userRow.UserPrincipalName): $($_.Exception.Message)" 
    } 
} 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

Write-Host "Bulk user deletion completed." 

Nota

Verifique se o arquivo CSV contém as colunas necessárias (por exemplo, UserPrincipalName). Além disso, ajuste o script para corresponder aos nomes de coluna reais no arquivo CSV.

Grupos

Download em massa de todos os grupos

Import-Module Microsoft.Graph.Groups 

 # Authenticate to Microsoft Graph (you may need to provide your credentials) 
 Connect-MgGraph -Scopes "Group.Read.All" 

 # Get the group members 
 $groups = Get-MgGroup -All | Select displayName, Id, groupTypes,mail 

 # Create a custom object to store group data 
$groupData = @() 

# Loop through each group and collect relevant data 
foreach ($group in $groups) { 
    if ($group.groupTypes -contains "Unified"){$groupType = "Microsoft 365"} 
    else {$groupType = "Security"} 
    if ($group.groupTypes -contains "DynamicMembership"){$membershipType = "Dynamic"} 
    else {$membershipType = "Assigned"} 
    $groupObject = [PSCustomObject]@{ 
        Id = $group.Id 
        DisplayName = $group.displayName 
        Mail = $group.mail 
        GroupType = $groupType 
        MemebershipType = $membershipType 
    }   
    $groupData += $groupObject 
} 

 # Specify the output CSV file path 
 $outputCsvPath = "C:\\Users\\cewu\\Documents\\Groups.csv" 

 $groupData| Export-Csv -Path $outputCsvPath -NoTypeInformation 
 
 Write-Host "Group members exported to $outputCsvPath" 

Download em massa de membros de um grupo

Import-Module Microsoft.Graph.Groups 

 # Authenticate to Microsoft Graph (you may need to provide your credentials) 
 Connect-MgGraph -Scopes "Group.Read.All,GroupMember.Read.All" 

 # Set the group ID of the group whose members you want to download 
 $groupId = "your_group_id" 

 # Get the group members 
 $members = Get-MgGroupMember -GroupId $groupId -All | select * -ExpandProperty additionalProperties | Select-Object @( 
                'id'     
                @{  Name       = 'userPrincipalName' 
                    Expression = { $_.AdditionalProperties["userPrincipalName"] } 
                } 
                @{  Name = 'displayName' 
                Expression = { $_.AdditionalProperties["displayName"] } 
                } 
            ) 

 # Specify the output CSV file path 
 $outputCsvPath = "C:\\Users\\YourUserName\\Documents\\GroupMembers.csv" 

 $members| Export-Csv -Path $outputCsvPath -NoTypeInformation 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

 Write-Host "Group members exported to $outputCsvPath"  

Adicionar membros em massa

Import-Module Microsoft.Graph.Groups 

 # Authenticate to Microsoft Graph (you may need to provide your credentials) 
 Connect-MgGraph -Scopes "GroupMember.ReadWrite.All" 

# Import the CSV file 
$members = Import-Csv -Path "C:\path\to\your\file.csv" 

# Define the Group ID 
$groupId = "your-group-id" 

# Iterate over each member and add them to the group 
foreach ($member in $members) { 
    try{ 
        New-MgGroupMember -GroupId $groupId -DirectoryObjectId $member.memberObjectId 
  	 Write-Host "Added $($member.memberObjectId) to the group."  
    } 
    Catch{ 
        Write-Host "Error adding member $($member.memberObjectId):$($_.Exception.Message)" 
    } 
} 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

Remover membros em massa

Import-Module Microsoft.Graph.Groups 

 # Authenticate to Microsoft Graph (you may need to provide your credentials) 
 Connect-MgGraph -Scopes "GroupMember.ReadWrite.All" 

# Import the CSV file 
$members = Import-Csv -Path "C:\path\to\your\file.csv" 

# Define the Group ID 
$groupId = "your-group-id" 

# Iterate over each member and add them to the group 
foreach ($member in $members) { 
    try{ 
        Remove-MgGroupMemberByRef -GroupId $groupId -DirectoryObjectId $member.memberObjectId \
        Write-Host "Removed $($member.memberObjectId) from the group." 
    } 
    Catch{ 
        Write-Host "Error removing member $($member.memberObjectId):$($_.Exception.Message)" 
    } 
} 

# Disconnect from Microsoft Graph 
Disconnect-MgGraph 

Dispositivos

Download em massa de todos os dispositivos

Import-Module Microsoft.Graph 

 # Authenticate to Microsoft Graph (you may need to provide your credentials) 
 Connect-MgGraph -Scopes "Device.Read.All" 

 # Get all devices  
 $devices = Get-MgDevice -All |select displayName,deviceId,operatingSystem,operatingSystemVersion,isManaged,isCompliant,mdmAppId,registeredOwners,TrustType 

 # Specify the output CSV file path 
 $outputCsvPath = "C:\\Users\\YourUserName\\Documents\\Devices.csv" 

 $devices| Export-Csv -Path $outputCsvPath -NoTypeInformation 

 Write-Host "Devices exported to $outputCsvPath"  

Próximos passos