Eliminazione bulk degli utenti in Microsoft Entra ID
Usando l'interfaccia di amministrazione in Microsoft Entra ID, parte di Microsoft Entra, è possibile rimuovere un numero elevato di membri in un gruppo usando un file con valori delimitati da virgole (CSV) per eliminare in blocco gli utenti.
Per eliminare in blocco gli utenti
Suggerimento
La procedura descritta in questo articolo può variare leggermente in base al portale di partenza.
Accedere all'interfaccia di amministrazione di Microsoft Entra almeno come Amministratore utenti.
Selezionare Microsoft Entra ID.
Selezionare Utenti>Tutte le>operazioni bulk>di utenti Elimina in blocco.
Nella pagina Eliminazione in blocco dell'utente selezionare Scarica per scaricare la versione più recente del modello CSV.
Aprire il file CSV e aggiungere una riga per ogni utente da eliminare. L'unico valore obbligatorio è Nome entità utente. Salvare il file.
Nella pagina Eliminazione in blocco dell'utente, in Caricare il file CSV, passare al file. Quando si seleziona il file e si fa clic su Invia, viene avviata la convalida del file CSV.
Dopo la convalida del contenuto del file, viene visualizzato il messaggio Il file è stato caricato. Se sono presenti errori, è necessario correggerli prima di poter inviare il processo.
Quando il file supera la convalida, selezionare Invia per avviare l'operazione in blocco che elimina gli utenti.
Al termine dell'operazione di eliminazione in blocco, verrà visualizzata una notifica per indicare che è stata completata correttamente.
Se si verificano errori, è possibile scaricare e visualizzare il file dei risultati nella pagina Risultati dell'operazione bulk. Il file contiene il motivo di ogni errore. L'invio del file deve corrispondere al modello usato e includere i nomi esatti della colonna. Per altre informazioni sulle limitazioni delle operazioni bulk, vedere Limiti del servizio di eliminazione bulk.
Struttura del modello CSV
Di seguito sono riportate le righe nel modello CSV scaricato nell'esempio seguente:
- Numero di versione: la prima riga contenente il numero di versione deve essere inclusa nel file CSV di caricamento.
- Intestazioni di colonna:
User name [userPrincipalName] Required
. Le versioni precedenti del modello possono variare. - Riga di esempi: nel modello è stato incluso un esempio di valore accettabile.
Example: chris@contoso.com
È necessario rimuovere la riga di esempio e sostituirla con le proprie voci.
Indicazioni aggiuntive per il modello CSV
- Le prime due righe del modello non devono essere rimosse o modificate oppure il modello non può essere elaborato.
- Le colonne obbligatorie sono riportate per prime.
- Non aggiungere nuove colonne al modello. Eventuali colonne aggiuntive aggiunte saranno ignorate e non verranno elaborate.
- Scaricare la versione più recente del modello CSV prima di apportare nuove modifiche.
Verificare lo stato
È possibile visualizzare lo stato di tutte le richieste in sospeso di operazioni in blocco nella pagina Risultati dell'operazione in blocco.
Successivamente, è possibile verificare che gli utenti eliminati esistano nell'organizzazione Microsoft Entra nel portale o tramite PowerShell.
Verificare gli utenti eliminati
- Accedere all'interfaccia di amministrazione di Microsoft Entra almeno come Amministratore utenti.
- Selezionare Microsoft Entra ID.
- Selezionare Solo tutti gli utenti e verificare che gli utenti eliminati non siano più elencati.
Verificare gli utenti eliminati con PowerShell
Esegui questo comando:
Get-MgUser -Filter "UserType eq 'Member'"
Verificare che gli utenti eliminati non siano più elencati.
Limiti del servizio di eliminazione in blocco
È necessario tenere presente che ogni attività di operazioni bulk può essere eseguita per un massimo di un'ora.
Le operazioni in blocco nel portale di amministrazione di Microsoft Entra potrebbero verificarsi un timeout e un errore in tenant molto grandi. Questa limitazione è un problema noto dovuto alle limitazioni di ridimensionamento. Il team di progettazione Microsoft sta lavorando a un nuovo servizio che risolverà questa limitazione.The Microsoft engineering team is working on a new service that will endly address this limitation.
Nota
Quando si eseguono operazioni bulk, ad esempio l'importazione o la creazione, è possibile che si verifichi un problema se l'operazione bulk non viene completata entro l'ora. Per risolvere questo problema, è consigliabile suddividere il numero di record elaborati per batch. Ad esempio, prima di avviare un'esportazione, è possibile limitare il set di risultati filtrando in base a un tipo di gruppo o a un nome utente per ridurre le dimensioni dei risultati. Affinando i filtri, essenzialmente si limitano i dati restituiti dall'operazione in blocco.
Un'altra soluzione alternativa per questo problema consiste nell'usare PowerShell per effettuare chiamate dirette all'API Microsoft Graph. Per gli errori di download in blocco di utenti e gruppi, è consigliabile usare i GET-MgGroup -All
cmdlet di PowerShell e GET-MgUser -All
.
Gli esempi di codice di PowerShell seguenti sono relativi alle operazioni bulk correlate a:
Utenti
Scaricare in blocco tutti gli utenti
# 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"
Creare utenti in blocco
# 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
Assicurarsi che il file CSV contenga le colonne necessarie, ad esempio DisplayName
, UserPrincipalName
e così via. Modificare anche lo script in modo che corrisponda ai nomi di colonna effettivi nel file CSV.
Eliminare utenti in blocco
# 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
Assicurarsi che il file CSV contenga le colonne necessarie, ad esempio UserPrincipalName
. Modificare anche lo script in modo che corrisponda ai nomi di colonna effettivi nel file CSV.
Gruppi
Scaricare in blocco tutti i gruppi
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"
Scaricare in blocco i membri di un gruppo
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"
Aggiungere membri in blocco
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
Rimuovere membri in blocco
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
Dispositivi
Scaricare in blocco tutti i dispositivi
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"