Gastaccounts beheren met Microsoft Entra PowerShell

Gastaccounts in Microsoft Entra ID externe gebruikers toegang verlenen tot specifieke resources, zoals bestanden, teams of sites zonder volledige leden van uw organisatie te zijn. Deze accounts worden meestal gebruikt voor samenwerking met partners, aannemers of klanten die tijdelijke toegang nodig hebben tot de resources van uw organisatie.

Het effectief beheren van gastaccounts is van cruciaal belang voor het onderhouden van de beveiliging en integriteit van de gegevens van uw organisatie. Als beheerder moet u ervoor zorgen dat gastaccounts alleen de benodigde machtigingen en toegang krijgen om de beoogde taken uit te voeren. Het regelmatig controleren en controleren van deze accounts is ook belangrijk om alle inactieve of verlopen accounts te identificeren die moeten worden verwijderd. Deze oefening helpt niet alleen om potentiële beveiligingsrisico's te verminderen, maar zorgt ook voor efficiënt gebruik van de resources van uw organisatie. Door gastaccounts goed te beheren, kunt u een veilige en productieve omgeving bieden voor externe samenwerking.

Prerequisites

Als u gastgebruikers wilt beheren met Microsoft Entra PowerShell, hebt u het volgende nodig:

Gastgebruikers uitnodigen

U kunt gastgebruikers uitnodigen voor uw organisatie met behulp van Microsoft Entra PowerShell. Met dit proces kunnen externe gebruikers toegang krijgen tot specifieke resources in uw organisatie zonder volledige leden te zijn. U kunt één gastgebruiker uitnodigen of meerdere gastgebruikers tegelijk uitnodigen.

Eén gastgebruikersaccount uitnodigen

Eén gastgebruiker uitnodigen voor uw organisatie met ten minste de rol Gastuitnodiger.

# 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'

Dit script stuurt een uitnodiging naar een gastgebruiker met het e-mailadres guestUser@contoso.com en leidt deze na acceptatie naar https://contoso.com. In de volgende uitvoer ziet u de details van de uitgenodigde gastgebruiker.

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

Meerdere gastgebruikersaccounts tegelijk uitnodigen

Gastgebruikers in bulk uitnodigen naar uw organisatie:

  1. Het CSV-bestand voorbereiden

    Maak in Microsoft Excel een CSV-bestand met de lijst met genodigde gebruikersnamen en e-mailadressen. Zorg ervoor dat u de kolomkoppen Naam en E-mail opneemt.

    Maak bijvoorbeeld een werkblad in de volgende indeling:

    Naam E-mail
    Reed Smith rsmith@contoso.com
    Hayden Cook hcook@fabricam.com
    Isabel Garcia igarcia@contoso.com

Sla het bestand op als C:\BulkInvite\Invitations.csv of een locatie van uw keuze.

Als u geen Excel hebt, kunt u een CSV-bestand maken in een teksteditor, zoals Kladblok. Scheid de waarden met een komma, en plaats elke rij op een nieuwe regel.

Maak verbinding met Microsoft Entra met ten minste de rol Gastuitnodiging.

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
}

Met dit script wordt een lijst met uitnodigingen uit een CSV-bestand geïmporteerd. Het definieert een aangepast bericht voor de uitgenodigde gebruikers en doorloopt vervolgens elke uitnodiging om een uitnodiging te verzenden naar elke gebruiker met zijn e-mailadres.

In de volgende uitvoer ziet u de details van de uitgenodigde gastgebruikers.

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…

Gastgebruikersaccounts weergeven en exporteren

Gastgebruikers weergeven en exporteren:

Maak verbinding met Microsoft Entra met ten minste de rol Gastuitnodiging.

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"

Met het script worden alle gastgebruikersaccounts opgehaald uit Microsoft Entra ID met hun weergavenamen, e-mailadressen en aanmaakdatums, waarna de lijst met gastgebruikers wordt weergegeven.

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

Sponsorship voor gastgebruikers beheren

In Microsoft Entra ID kunt u met gastsponsor specifieke gebruikers of groepen aanwijzen als sponsors voor gastgebruikers, zodat ze de toegang en machtigingen van de gastgebruiker kunnen beheren. Deze functie is handig voor organisaties die de toegang van externe gebruikers willen beheren en bewaken.

Als u sponsorship voor gastgebruikers wilt beheren, kunt u een sponsor toewijzen, weergeven en verwijderen van een gastgebruiker. U hebt ten minste een gebruikersbeheerderrol nodig om deze acties uit te voeren.

Een sponsor toewijzen aan een gastgebruiker

In het volgende voorbeeld ziet u hoe u een sponsor toewijst aan een gastgebruiker in Microsoft Entra ID. U kunt de New-EntraUserSponsor cmdlet gebruiken om een sponsor toe te wijzen aan een opgegeven gastgebruiker.

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

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

In dit voorbeeld wordt een sponsor toegewezen aan een gastgebruiker in Microsoft Entra ID. De UserId parameter geeft de gastgebruiker op en de SponsorId parameter geeft de sponsor op.

De sponsors van een gastgebruiker weergeven

In het volgende voorbeeld ziet u hoe u de sponsors van een gastgebruiker in Microsoft Entra ID kunt bekijken. U kunt de Get-EntraUserSponsor cmdlet gebruiken om de sponsors van een opgegeven gastgebruiker op te halen.

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

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

In dit voorbeeld worden de sponsors van een gastgebruiker opgehaald in Microsoft Entra ID. De UserId parameter geeft de gastgebruiker op.

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

Een sponsor verwijderen uit een gastgebruiker

In het volgende voorbeeld ziet u hoe u een sponsor verwijdert uit een gastgebruiker in Microsoft Entra ID. U kunt de Remove-EntraUserSponsor cmdlet gebruiken om een sponsor van een opgegeven gastgebruiker te verwijderen.

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

In dit voorbeeld wordt een sponsor verwijderd uit een gastgebruiker in Microsoft Entra ID. Met UserId de parameter wordt de gastgebruiker opgegeven en met de SponsorId parameter wordt de sponsor opgegeven die moet worden verwijderd.

Inwisselingsstatus van gastgebruiker opnieuw instellen

In Microsoft Entra ID is het opnieuw instellen van de inwisselingsstatus van een gastgebruiker nodig wanneer u wilt toestaan dat de gebruiker de uitnodiging opnieuw kan inwisselen. Deze functie is handig als de gebruiker het inwisselingsproces niet voltooit of als de status om welke reden dan ook opnieuw moet worden ingesteld. In het volgende voorbeeld ziet u hoe u de inwisselingsstatus voor een gastgebruiker opnieuw instelt door ze een nieuwe uitnodiging te sturen.

Identificeer eerst de gastgebruiker en verzend een nieuwe uitnodiging: hiermee wordt de inwisselingsstatus opnieuw ingesteld door de gastgebruiker opnieuw uit te nodigen.

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

Gastgebruikersaccounts uitschakelen

In de volgende voorbeelden ziet u hoe u gastgebruikersaccounts uitschakelt in Microsoft Entra ID. U kunt één gastaccount uitschakelen of alle gastaccounts uitschakelen op basis van uw vereisten.

Eén gastgebruikersaccount uitschakelen

Eén gastgebruikersaccount uitschakelen:

Maak verbinding met Microsoft Entra met ten minste een gebruikersbeheerderrol:

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

Alle gastgebruikersaccounts uitschakelen

Voer de volgende cmdlet uit om alle gastgebruikersaccounts uit te schakelen.

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

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

Verlopen gastgebruikersaccounts weergeven en exporteren

Verlopen gastgebruikersaccounts weergeven en exporteren:

  1. Vouw het vorige voorbeeld uit om gastgebruikers op te halen en elke gastgebruiker te controleren op vervaldatum. In dit voorbeeld wordt ervan uitgegaan dat gastaccounts 90 dagen na het maken verlopen.

    $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. Exporteer het rapport naar een CSV-bestand.

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

Verlopen gastgebruikersaccounts verwijderen

Maak verbinding met Microsoft Entra met ten minste een gebruikersbeheerderrol:

In dit voorbeeld wordt ervan uitgegaan dat gastaccounts 90 dagen na het maken verlopen.

Note

Met dit script worden alle gastgebruikers verwijderd waarvan de accounts zijn verlopen. Deze actie kan niet ongedaan worden genomen en moet voorzichtig worden gebruikt. Zorg ervoor dat u altijd een back-up of een herstelplan hebt voordat u gebruikersaccounts verwijdert.

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