Compartir por


Restauración masiva de usuarios eliminados en Microsoft Entra ID

Microsoft Entra ID, parte de Microsoft Entra, admite operaciones de restauración de usuarios en masa, así como la descarga de listas de usuarios, grupos y miembros del grupo.

Nociones sobre la plantilla CSV

Descargue y rellene la plantilla CSV para restaurar en masa a los usuarios de Microsoft Entra de forma correcta. La plantilla CSV que descargue podría parecerse a este ejemplo:

Captura de pantalla de la hoja de cálculo para cargar y llamar a explicar el propósito y los valores de cada fila y columna.

Estructura de la plantilla CSV

Las filas de una plantilla CSV descargada son las siguientes:

  • Número de versión: la primera fila, que contiene el número de versión, debe estar incluida en el archivo CSV de carga.
  • Encabezados de columna: el formato de los encabezados de columna es <Nombre del elemento> [nombreDePropiedad] <Required (Obligatorio) o en blanco>. Por ejemplo, Object ID [objectId] Required. Algunas versiones anteriores de la plantilla podrían tener ligeras variaciones.
  • Fila de ejemplos: en la plantilla se incluye una fila de ejemplos de valores válidos para cada columna. Debe quitar la fila de ejemplos y reemplazarla por sus propias entradas.

Instrucciones adicionales

  • Las dos primeras filas de la plantilla de carga no se deben eliminar ni modificar, o no se podrá procesar la carga.
  • Las columnas necesarias se enumeran en primer lugar.
  • No se recomienda agregar nuevas columnas a la plantilla. Cualquier columna adicional que agregue se omitirá y no se procesará.
  • Se recomienda que descargue la versión más reciente de la plantilla CSV tan a menudo como sea posible.

Para restaurar usuarios en masa

Sugerencia

Los pasos de este artículo pueden variar ligeramente en función del portal desde donde comienza.

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de usuario.

  2. Seleccione Microsoft Entra ID.

  3. Seleccione Todos los usuarios>Usuarios>eliminados.

  4. En la página Usuarios eliminados, seleccione Restauración masiva para cargar un archivo .csv válido de las propiedades de los usuarios que se van a restaurar.

    Captura de pantalla de la selección del comando de restauración masiva en la página Usuarios eliminados.

  5. Abra la plantilla CSV y agregue una línea por cada usuario que quiera restaurar. El único valor necesario es ObjectID. A continuación, guarde el archivo.

    Captura de pantalla de la selección de un archivo .csv local en el que se indican los usuarios que desea agregar

  6. En la página Restauración masiva, en Cargue el archivo csv, vaya al archivo. Al seleccionar el archivo y hacer clic en Enviar, comienza su validación.

  7. Cuando finalice la validación del contenido del archivo, aparecerá el mensaje Archivo cargado correctamente. Si hay errores, debe corregirlos para poder enviar el trabajo.

  8. Cuando el archivo supere la validación, seleccione Enviar para iniciar la operación masiva que restaura los usuarios.

  9. Cuando la operación de restauración finalice, verá una notificación que indicará que la operación masiva se realizó correctamente.

Si se producen errores, puede descargar y ver el archivo de resultados en la página Resultados de la operación masiva. El archivo contiene el motivo de cada error. El envío del archivo debe coincidir con la plantilla proporcionada e incluir los nombres de columna exactos. Para más información sobre las limitaciones de las operaciones masivas, vea Límites del servicio de restauración masiva.

Comprobar estado

Puede ver el estado de todas las solicitudes masivas pendientes en la página Resultados de la operación masiva.

Captura de pantalla de la comprobación del estado en la página Resultados de operaciones masivas.

A continuación, puede comprobar que los usuarios restaurados existen en la organización de Microsoft Entra mediante Microsoft Entra ID o PowerShell.

Visualización de los usuarios restaurados en Azure Portal

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de usuario.
  2. Seleccione Microsoft Entra ID.
  3. En Administrar, seleccione Todos los usuarios, seleccione Usuarios.
  4. En Mostrar, seleccione Todos los usuarios y compruebe que se incluyen los usuarios restaurados.

Visualización de usuarios con PowerShell

Ejecute el siguiente comando:

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

Debería ver que se han incluido los usuarios restaurados.

Nota:

Los módulos de PowerShell de Azure AD y MSOnline están en desuso a partir del 30 de marzo de 2024. Para obtener más información, lea la actualización de desuso. Desde esta fecha, el soporte de estos módulos se limita a la asistencia de migración al SDK de PowerShell de Microsoft Graph y a las correcciones de seguridad. Los módulos en desuso seguirán funcionando hasta el 30 de marzo de 2025.

Se recomienda migrar a PowerShell de Microsoft Graph para interactuar con Microsoft Entra ID (anteriormente Azure AD). Para preguntas comunes sobre la migración, consulte las Preguntas más frecuentes sobre migración. Nota: versiones 1.0.x de MSOnline pueden experimentar interrupciones después del 30 de junio de 2024.

Límites del servicio de restauración masiva

Debe tener en cuenta que cada actividad de operaciones masivas puede durar hasta una hora.

Las operaciones masivas en el portal de Administrador de Microsoft Entra podrían agotar el tiempo de espera y producir errores en inquilinos muy grandes. Esta limitación es un problema conocido debido a las limitaciones de escalado. El equipo de ingeniería de Microsoft trabaja en un nuevo servicio que finalmente abordará esta limitación.

Nota:

Al realizar operaciones masivas, como importar o crear, puede producirse un problema si la operación masiva no se completa en el plazo de una hora. Para solucionar este problema, se recomienda dividir el número de registros procesados por lote. Por ejemplo, antes de iniciar una exportación, podría limitar el conjunto de resultados si filtra por un tipo de grupo o un nombre de usuario para reducir el tamaño de los resultados. Al refinar los filtros, básicamente limita los datos devueltos por la operación masiva.

Otra solución alternativa para este problema consiste en es usar PowerShell para realizar llamadas directas de Microsoft Graph API. Para errores de descarga masiva de usuarios y grupos, se recomienda usar los cmdlets GET-MgGroup -All y GET-MgUser -All de PowerShell.

Los siguientes ejemplos de código de PowerShell son para operaciones masivas relacionadas con:

Usuarios

Descarga masiva de todos los usuarios

# 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" 

Creación masiva de usuarios

# 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:

Asegúrese de que el archivo CSV contiene las columnas necesarias (por ejemplo; DisplayName, UserPrincipalName, etc.). Además, ajuste el script para que coincida con los nombres reales de las columnas en el archivo CSV.

Eliminación masiva de usuarios

# 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:

Asegúrese de que el archivo CSV contiene las columnas necesarias (por ejemplo, UserPrincipalName). Además, ajuste el script para que coincida con los nombres reales de las columnas en el archivo CSV.

Grupos

Descarga masiva de todos los 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" 

Descarga masiva de miembros de un 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"  

Incorporación de miembros de forma masiva

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 

Eliminación de miembros de forma masiva

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

Descarga masiva de todos los 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"  

Pasos siguientes