Microsoft 365: Gérer les utilisateurs et groupes via Powershell
Utiliser le module Microsoft Graph (recommandé)
Installation du module
Install-Module Microsoft.Graph -Scope CurrentUserConnexion
Ensuite, il faut se connecter avec les bons scopes. Par exemple :
Connect-MgGraph -Scopes "User.ReadWrite.All"Lors de la connexion, il te sera demandé de t’authentifier (avec un compte ayant les permissions suffisantes dans Azure AD).
Création de l’utilisateur
Une fois connecté, tu peux créer l’utilisateur. Par exemple, en utilisant la cmdlet New-MgUser :
New-MgUser `
-AccountEnabled:$true `
-DisplayName "Adele Blanc-sec" `
-MailNickname "Adele" `
-UserPrincipalName "adele@coubiac.ovh" `
-PasswordPolicies "DisablePasswordExpiration" `
-PasswordProfile @{
ForceChangePasswordNextSignIn = $true
Password = "MotDePasse!123"
} `
-JobTitle "Aventurière" `
-Department "Paranormal" `
-UsageLocation "FR" `
-City "Paris"Modification d'un utilisateur
- Fais une recherche à l'aide du Cmdlet
Get-MgUserpour récupérer l'id de l'utilisateur:
Get-MgUser -ConsistencyLevel eventual -Count userCount -Filter "startsWith(DisplayName, 'a')" -Top 1- Utilises le Cmdlet
Update-MgUserouSet-MgUser(qui est un alias) pour modifier une ou plusieurs propriétés d'un utilisateur:
Update-MgUser -UserId '1ec98b35-c6d6-48bf-b164-9d17cf98fbc7' -JobTitle 'Journaliste'Suppression d'un utilisateur
Remove-MgUser -UserId '1ec98b35-c6d6-48bf-b164-9d17cf98fbc7'Restaurer un utilisateur
Quand un utilisateur est supprimé dans Azure AD (Microsoft Entra ID), il n’est pas immédiatement supprimé définitivement. Il est déplacé dans une sorte de "corbeille" appelée "recycle bin" ou plus précisément "Deleted Items".
🗑️ Durée de rétention des utilisateurs supprimés
Les objets (utilisateurs, groupes...) supprimés restent dans cette corbeille pendant 30 jours.
👉 Après 30 jours, l’objet est purgé définitivement (hard delete) et irréversible. Tu ne pourras plus le restaurer.
🔄 Pendant ces 30 jours, tu peux :
✅ Voir les utilisateurs supprimés :
Get-MgDirectoryDeletedUser✅ Restaurer un utilisateur supprimé :
Restore-MgDirectoryDeletedItem -DirectoryObjectId <ID de l'utilisateur>Tu peux récupérer l’ID avec
Get-MgDirectoryDeletedUser
LeUserPrincipalNamene suffit pas toujours pour le restaurer, il faut l’Id.
💡 Bon à savoir
- Quand tu restaures un utilisateur, il retrouve :
- son ID
- son UPN (login) s’il est encore libre
- ses attributs (titre, département, etc.)
- ses groupes d’appartenance si tu utilises la fonctionnalité de sauvegarde avancée (mais pas par défaut)
- Si un autre objet a été créé avec le même nom ou UPN, la restauration peut échouer.
Création d'un groupe
Pour pouvoir travailler avec les groupes, il faut des permissions supplémentaires. Il faut donc se reconnecter.
Connect-MgGraph -Scopes "User.ReadWrite.All" , "Group.ReadWrite.All"On peut ensuite créer le groupe.
$params = @{
description = "Les aventuriers";
displayName = "aventurier";
groupTypes = @("Unified");
mailEnabled = $true;
mailNickname = "Aventuriers";
securityEnabled = $false
}
New-MgGroup -BodyParameter $params🔍 securityEnabled
Ce paramètre détermine si le groupe est un groupe de sécurité utilisé pour gérer les autorisations d'accès (ACL, fichiers, applications, etc.).
securityEnabled = $true➜ Groupe de sécurité- Peut être utilisé pour attribuer des autorisations (sur des fichiers, des applications, etc.)
- Peut contenir des utilisateurs, groupes, etc.
securityEnabled = $false➜ ce n’est pas un groupe de sécurité
🔍 groupTypes
Ce champ indique le type fonctionnel du groupe. Il peut contenir :
Valeur | Signification |
@("Unified") | Groupe Microsoft 365 (anciennement Office 365) : boîte mail, calendrier, Teams, etc. |
@() | Groupe de sécurité classique sans fonctionnalités M365 |
@("DynamicMembership") | Groupe dynamique (ajout automatique de membres selon des règles) – seulement valable avec M365 ou sécurité. |
🧠 Résumé des combinaisons classiques :
groupTypes | securityEnabled | mailEnabled | Type de groupe |
@("Unified") | $false | $true | Groupe Microsoft 365 |
@() | $true | $false | Groupe de sécurité (pas de boîte mail) |
@() | $false | $true | Groupe de distribution |
@() | $false | $false | Non valide |
@() | $true | $true | Non valide |
@("Unified") | $true | $true | Non valide (Unified ne peut pas être securityEnabled) |


