Compartilhar via


Restaurar usuários excluídos em massa no Microsoft Entra ID

Microsoft Entra ID, parte do Microsoft Entra, é compatível com operações de restauração de usuário em massa e com o download de listas de usuários, grupos e membros do grupo.

Entender o modelo CSV

Baixe e preencha o modelo CSV para ajudar você a obter sucesso na restauração em massa de usuários do Microsoft Entra. O modelo CSV que você baixa pode ser semelhante a este exemplo:

Captura de tela da planilha para fazer upload e legendas explicando a finalidade e os valores de cada linha e coluna.

Estrutura do modelo CSV

As linhas em um modelo CSV baixado são as seguintes:

  • Número de versão: A primeira linha que contém o número de versão deve ser incluída no CSV de carregamento.
  • Cabeçalhos de coluna: O formato dos cabeçalhos de coluna é <Nome do item> [PropertyName]<Obrigatório ou em branco>. Por exemplo, Object ID [objectId] Required. Algumas versões mais antigas do modelo podem ter pequenas variações.
  • Linha de exemplos: incluímos no modelo uma linha de exemplos de valores aceitáveis para cada coluna. Você deve remover a linha de exemplos e substituí-la por suas entradas.

Diretriz adicional

  • As duas primeiras linhas do modelo de carregamento não devem ser removidas nem modificadas ou o carregamento não poderá ser processado.
  • As colunas necessárias são listadas primeiro.
  • Não recomendamos adicionar novas colunas ao modelo. Todas as colunas extras adicionadas são ignoradas e não são processadas.
  • Recomendamos que você baixe a versão mais recente do modelo CSV sempre que possível.

Para restaurar usuários em massa

Dica

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

  1. Entre no centro de administração do Microsoft Entra como, no mínimo, Administrador de Usuários.

  2. Selecione ID do Microsoft Entra.

  3. Selecione Todos os usuários>Usuários>Excluídos.

  4. Na página Usuários excluídos, selecione Restauração em massa para carregar um arquivo CSV válido de propriedades dos usuários a serem restaurados.

    Captura de tela da seleção do comando de restauração em massa na página Usuários excluídos.

  5. Abra o modelo CSV e adicione uma linha para cada usuário que você deseja restaurar. O único valor necessário é ObjectID. Em seguida, salve o arquivo.

    Captura de tela da seleção de um arquivo CSV local no qual você lista os usuários que deseja adicionar

  6. Na página Restauração em massa, em Carregar seu arquivo csv, procure 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á a mensagem Arquivo carregado com êxito. Se houver erros, você precisará corrigi-los antes de enviar o trabalho.

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

  9. Quando a operação de restauração é concluída, você verá uma notificação indicando que a operação em massa foi bem-sucedida.

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

Verificar o status

É possível ver o status de todas as suas solicitações em massa pendentes na página Resultados da operação em massa.

Captura de tela da verificação do status na página Resultados de operações em massa..

Em seguida, você pode verificar se os usuários que você restaurou existem na organização Microsoft Entra pelo portal do Microsoft Entra ID ou PowerShell.

Exibir usuários restaurados no portal do Azure

  1. Entre no centro de administração do Microsoft Entra como, no mínimo, Administrador de Usuários.
  2. Selecione ID do Microsoft Entra.
  3. Selecione Todos os usuários e, Gerenciar, selecione Usuários.
  4. Em Mostrar, selecione Todos os usuários e verifique se os usuários restaurados estão listados.

Exibir usuários com o PowerShell

Execute o comando a seguir:

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

Você deve ver que os usuários restaurados estão listados.

Observação

Os módulos Azure AD e MSOnline PowerShell estão preteridos desde 30 de março de 2024. Para saber mais, leia a atualização de preterição. Após essa data, o suporte a esses módulos se limitará à assistência à migração para o SDK do Microsoft Graph PowerShell e às correções de segurança. Os módulos preteridos continuarão funcionando até 30 de março de 2025.

Recomendamos migrar para o Microsoft Graph PowerShell para interagir com o Microsoft Entra ID (antigo Azure AD). Para perguntas comuns sobre migração, consulte as Perguntas Frequentes sobre Migração. Observação: As versões 1.0.x do MSOnline poderão sofrer interrupções após 30 de junho de 2024.

Limites de serviço de restauraçã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 acabar e falhar em locatários muito grandes. Essa limitação é um problema conhecido devido a limitações de dimensionamento. A equipe de engenharia da Microsoft está trabalhando em um novo serviço que eventualmente resolverá essa limitação.

Observação

Ao executar operações em massa, como importar ou criar, você poderá encontrar um problema se a operação em massa não for concluída dentro de uma hora. Para contornar esse problema, é recomendável 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 no download em massa de usuários e grupos, recomendamos o uso dos cmdlets do PowerShell GET-MgGroup -All e GET-MgUser -All.

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

Usuários

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" 

Criação de usuários 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." 

Observação

Certifique-se de que seu arquivo CSV contenha as colunas necessárias (por exemplo, DisplayName, UserPrincipalName e assim por diante). Além disso, ajuste o script para que corresponda aos nomes de coluna reais no seu arquivo CSV.

Exclusão em massa de 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.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." 

Observação

Certifique-se de que o arquivo CSV contenha as colunas necessárias (por exemplo, UserPrincipalName). Além disso, ajuste o script para que corresponda aos nomes de coluna reais no seu 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óximas etapas