Gérer les comptes invités à l’aide de Microsoft Entra PowerShell

Les comptes invités dans Microsoft Entra ID permettent aux utilisateurs externes d’accéder à des ressources spécifiques telles que des fichiers, des équipes ou des sites sans être membres complets de votre organisation. Ces comptes sont généralement utilisés pour la collaboration avec des partenaires, des sous-traitants ou des clients qui ont besoin d’un accès temporaire aux ressources de votre organisation.

La gestion efficace des comptes invités est essentielle pour maintenir la sécurité et l’intégrité des données de votre organisation. En tant qu’administrateur, vous devez vous assurer que les comptes invités reçoivent uniquement les autorisations nécessaires et l’accès pour effectuer leurs tâches prévues. L’examen et l’audit réguliers de ces comptes sont également importants pour identifier les comptes inactifs ou expirés qui doivent être supprimés. Cet exercice permet non seulement de réduire les risques de sécurité potentiels, mais également de garantir une utilisation efficace des ressources de votre organisation. En gérant bien les comptes invités, vous pouvez fournir un environnement sécurisé et productif pour la collaboration externe.

Prerequisites

Pour gérer les utilisateurs invités avec Microsoft Entra PowerShell, vous avez besoin des éléments suivants :

Inviter des comptes d’utilisateur invité

Vous pouvez inviter des utilisateurs invités à votre organisation à l’aide de Microsoft Entra PowerShell. Ce processus permet aux utilisateurs externes d’accéder à des ressources spécifiques dans votre organisation sans être membres complets. Vous pouvez inviter un seul utilisateur invité ou inviter en bloc plusieurs utilisateurs invités à la fois.

Inviter un seul compte d’utilisateur invité

Pour inviter un seul utilisateur invité dans votre organisation avec au minimum le rôle de Inviteur d’invités.

# Connect to Microsoft Entra
Connect-Entra -Scopes 'User.Invite.All'

#Invite the guest user
New-EntraInvitation `
    -InvitedUserEmailAddress 'guestUser@contoso.com' `
    -InviteRedirectUrl 'https://contoso.com' `
    -SendInvitationMessage $true `
    -InvitedUserDisplayName 'Guest User'

Ce script envoie une invitation à un utilisateur invité à l’adresse e-mail guestUser@contoso.com, en le redirigeant vers https://contoso.com après acceptation. La sortie suivante affiche les détails de l’utilisateur invité invité.

Id                                   InviteRedeemUrl
--                                   ---------------                                           
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb https://login.microsoftonline.com/redeem?rd=https%3a%2f%2finvitation…

Inviter en bloc des comptes d’utilisateurs invités

Pour inviter en bloc des utilisateurs invités à votre organisation :

  1. Préparer le fichier CSV

    Dans Microsoft Excel, créez un fichier CSV avec la liste des noms d’utilisateurs invités et des adresses e-mail. Veillez à inclure les en-têtes de colonne Nom et e-mail .

    Par exemple, créez une feuille de calcul dans le format suivant :

    Nom Courrier électronique
    Reed Smith rsmith@contoso.com
    Hayden Cook hcook@fabricam.com
    Isabel Garcia igarcia@contoso.com

Enregistrez le fichier sous C:\BulkInvite\Invitations.csv ou à l’emplacement de votre choix.

Si vous n'avez pas Excel, vous pouvez créer un fichier CSV dans n'importe quel éditeur de texte, tel que le Bloc-notes. Séparez chaque valeur avec une virgule et chaque ligne avec une nouvelle ligne.

Connectez-vous à Microsoft Entra avec, au minimum, le rôle Inviteur d’invités.

Connect-Entra -Scopes 'User.Invite.All'

# Import the CSV file containing the invitations.
$invitations = Import-Csv -Path "c:\bulkinvite\invitations.csv"

# Define the message to be sent to the invited users.
$messageBody = "Hello. You are invited to the Contoso organization."

# Iterate over each invitation in the CSV file.
foreach ($invitation in $invitations) {
    # Define the invitation parameters
    $invitationParams = @{
        InvitedUserEmailAddress = $invitation.Email  # Ensure this matches your CSV column name
        InviteRedirectUrl       = "https://contoso.com"
        SendInvitationMessage   = $true
        InvitedUserMessageInfo  = @{
            CustomizedMessageBody = $messageBody
        }
    }

    # Create a new invitation using the defined parameters
    New-EntraInvitation @invitationParams
}

Ce script importe une liste d’invitations à partir d’un fichier CSV. Il définit un message personnalisé pour les utilisateurs invités, puis itère par le biais de chaque invitation pour envoyer une invitation à chaque utilisateur avec son adresse e-mail.

Le résultat suivant affiche les détails des utilisateurs invités.

Id                                   InviteRedeemUrl
--                                   ---------------                                                      
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb https://login.microsoftonline.com/redeem?rd=https%3a%2f%2finvitation…
bbbbbbbb-1111-2222-3333-cccccccccccc https://login.microsoftonline.com/redeem?rd=https%3a%2f%2finvitation…

Afficher et exporter des comptes d’utilisateur invités

Pour afficher et exporter des utilisateurs invités :

Connectez-vous à Microsoft Entra avec au moins le rôle de Inviteur d’invités.

Connect-Entra -Scopes 'User.Read.All'
 

# Retrieve all guest user accounts.
Get-EntraUser -Filter "userType eq 'Guest'" -All -Property "displayName", "mail", "createdDateTime", "AccountEnabled" | Select-Object "displayName", "mail", "createdDateTime", "AccountEnabled"

Le script récupère tous les comptes d’utilisateurs invités à partir de Microsoft Entra ID avec leurs noms d’affichage, adresses e-mail et dates de création, puis affiche la liste de ces utilisateurs invités.

DisplayName   Id   Mail                               createdDateTime      AccountEnabled
-----------   --   ----                               ---------------      --------------
externaluser1      externaluser1@externaldomain1.com  13/09/2024 18:37:33  True
externaluser2      externaluser2@externaldomain2.com  15/02/2024 15:05:31  True

Gérer le parrainage d’utilisateurs invités

Dans Microsoft Entra ID, le parrainage invité vous permet de désigner des utilisateurs ou des groupes spécifiques en tant que commanditaires pour les utilisateurs invités, ce qui leur donne la possibilité de gérer l'accès et les autorisations de l'utilisateur invité. Cette fonctionnalité est utile pour les organisations qui souhaitent contrôler et surveiller l’accès des utilisateurs externes.

Pour gérer le parrainage d’utilisateurs invités, vous pouvez attribuer, afficher et supprimer un sponsor d’un utilisateur invité. Vous avez besoin d’au moins un rôle Administrateur d’utilisateur pour effectuer ces actions.

Attribuer un sponsor à un utilisateur invité

L’exemple suivant montre comment affecter un sponsor à un utilisateur invité dans Microsoft Entra ID. Vous pouvez utiliser l’applet New-EntraUserSponsor de commande pour affecter un sponsor à un utilisateur invité spécifié.

Connect-Entra -Scopes 'User.ReadWrite.All'

$sponsor = Get-EntraUser -UserId 'SponsorEmail@contoso.com'
Set-EntraUserSponsor -UserId 'guestuser@contoso.com' -Type User -SponsorIds $sponsor.Id

Cet exemple affecte un sponsor à un utilisateur invité dans Microsoft Entra ID. Le UserId paramètre spécifie l’utilisateur invité et le SponsorId paramètre spécifie le sponsor.

Afficher les sponsors d’un utilisateur invité

L'exemple suivant montre comment afficher les sponsors d'un utilisateur invité dans Microsoft Entra ID. Vous pouvez utiliser l’applet Get-EntraUserSponsor de commande pour récupérer les sponsors d’un utilisateur invité spécifié.

Connect-Entra -Scopes 'User.Read.All'

Get-EntraUserSponsor -UserId 'guestuser@contoso.com' -All | Select-Object Id, DisplayName, '@odata.type', CreatedDateTime | Format-Table -AutoSize

Cet exemple récupère les sponsors d’un utilisateur invité dans Microsoft Entra ID. Le UserId paramètre spécifie l’utilisateur invité.

id                                   displayName          @odata.type           createdDateTime
--                                   -----------      -----------           ---------------
aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb GuestUser Sponsor 1  #microsoft.graph.user 5/6/2025 11:29:26 PM
bbbbbbbb-1111-2222-3333-bbbbbbbbbbbb GuestUser Sponsor 2  #microsoft.graph.user 5/6/2025 11:29:27 PM

Supprimer un sponsor d’un utilisateur invité

L’exemple suivant montre comment supprimer un sponsor d’un utilisateur invité dans Microsoft Entra ID. Vous pouvez utiliser l’applet Remove-EntraUserSponsor de commande pour supprimer un sponsor d’un utilisateur invité spécifié.

Connect-Entra -Scopes 'User.ReadWrite.All'

$sponsor = Get-EntraUserSponsor -UserId 'SawyerM@contoso.com' | Where-Object { $_.displayName -eq 'Adele Vance (Fabrikam)' }
Remove-EntraUserSponsor -UserId 'SawyerM@Contoso.com' -SponsorId $sponsor.Id

Cet exemple supprime un sponsor d’un utilisateur invité dans Microsoft Entra ID. Le UserId paramètre spécifie l’utilisateur invité et le SponsorId paramètre spécifie le sponsor à supprimer.

Réinitialiser le statut d’acceptation de l’utilisateur invité

Dans Microsoft Entra ID, réinitialiser l’état d’acceptation d’un utilisateur invité est nécessaire lorsque vous souhaitez autoriser cet utilisateur à accepter de nouveau son invitation. Cette fonctionnalité est utile si l’utilisateur ne termine pas le processus d’échange ou si son état doit être réinitialisé pour une raison quelconque. L’exemple suivant montre comment réinitialiser l’état d’échange d’un utilisateur invité en lui envoyant une nouvelle invitation.

Tout d’abord, identifiez l’utilisateur invité et envoyez une nouvelle invitation : cela réinitialise l’état d’échange en invitant à nouveau l’utilisateur invité.

Connect-Entra -Scopes 'User.Invite.All'

$user = Get-EntraUser -Filter "startsWith(mail, 'johndoe@gmail.com')"
New-EntraInvitation `
    -InvitedUserEmailAddress $user.Mail `
    -InviteRedirectUrl "https://myapps.contoso.com" `
    -ResetRedemption `
    -SendInvitationMessage `
    -InvitedUser $user

Désactiver les comptes d’utilisateur invités

Les exemples suivants montrent comment désactiver les comptes d’utilisateur invités dans Microsoft Entra ID. Vous pouvez désactiver un compte invité unique ou désactiver tous les comptes invités en fonction de vos besoins.

Désactiver un compte d’utilisateur invité unique

Pour désactiver un compte d’utilisateur invité unique :

Connectez-vous à Microsoft Entra avec au moins un rôle Administrateur d’utilisateur :

Connect-Entra -Scopes 'User.ReadWrite.All'
  
# Disable the guest user account.
Get-EntraUser -Filter "userType eq 'Guest' and mail eq 'guestUser@contoso.com'" | Set-EntraUser -AccountEnabled $false

Désactiver tous les comptes d’utilisateur invités

Exécutez l’applet de commande suivante pour désactiver tous les comptes d’utilisateur invités.

Connect-Entra -Scopes 'User.ReadWrite.All'

# Disable the guest user account
Get-EntraUser | Where-Object { $_.UserType -eq 'Guest' } | Set-EntraUser -AccountEnabled $false

Afficher et exporter des comptes d’utilisateur invités expirés

Pour afficher et exporter les comptes d’utilisateur invités expirés :

  1. Développez l’exemple précédent pour récupérer les utilisateurs invités et vérifier chacun d’eux pour expiration. Dans cet exemple, nous partons du principe que les comptes invités expirent 90 jours après la création.

    $report = @() 
    $now = Get-Date  
    # Retrieve all guest users.
    $guestUsers = Get-EntraUser -Filter "userType eq 'Guest'" -All
    
    foreach ($guest in $guestUsers) {
        # Calculate the expiration date based on the creation date
        $guestExpirationDate = $guest.CreatedDateTime.AddDays(90)
    
        # Check if the account is expired
        if ($guestExpirationDate -lt $now) {
            # Add expired guest account details to the report
            $report += [PSCustomObject]@{
                Id          = $guest.Id
                Name        = $guest.DisplayName
                Mail        = $guest.Mail
                Expiration  = $guestExpirationDate
                CreatedDate = $guest.CreatedDateTime
            }
        }
    }
    
  2. Exportez le rapport dans un fichier CSV.

       $report | Export-Csv -Path "ExpiredGuestAccounts.csv" -NoTypeInformation  
    

Supprimer les comptes d’utilisateur invités expirés

Connectez-vous à Microsoft Entra avec au moins un rôle Administrateur d’utilisateur :

Dans cet exemple, nous partons du principe que les comptes invités expirent 90 jours après la création.

Note

Ce script supprime tous les utilisateurs invités dont les comptes ont expiré. Cette action est irréversible et doit être utilisée avec précaution. Veillez toujours à disposer d’une sauvegarde ou d’un plan de récupération avant de supprimer des comptes d’utilisateur.

Connect-Entra -Scopes "User.ReadWrite.All"

$age = (Get-Date).AddDays(-90).ToString("yyyy-MM-ddTHH:mm:ssZ") 
Get-EntraUser -Filter "userType eq 'Guest' and createdDateTime le $age" -All | Remove-EntraUser