Skip to main content

Microsoft 365: Gérer les utilisateurs et groupes via Powershell

Utiliser le module Microsoft Graph (recommandé)

Installation du module

Install-Module Microsoft.Graph -Scope CurrentUser

Connexion

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"

image.png

Modification d'un utilisateur

  • Fais une recherche à l'aide du Cmdlet Get-MgUser pour récupérer l'id de l'utilisateur:
Get-MgUser -ConsistencyLevel eventual -Count userCount -Filter "startsWith(DisplayName, 'a')" -Top 1
  • Utilises le Cmdlet Update-MgUser ou Set-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'

image.png

Suppression d'un utilisateur

Remove-MgUser -UserId '1ec98b35-c6d6-48bf-b164-9d17cf98fbc7'

image.png

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
Le UserPrincipalName ne 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 = $trueGroupe 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)