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:
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.
Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de usuario.
Seleccione Microsoft Entra ID.
Seleccione Todos los usuarios>Usuarios>eliminados.
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.
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.
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.
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.
Cuando el archivo supere la validación, seleccione Enviar para iniciar la operación masiva que restaura los usuarios.
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.
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
- Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de usuario.
- Seleccione Microsoft Entra ID.
- En Administrar, seleccione Todos los usuarios, seleccione Usuarios.
- 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"