Verwalten von Gastkonten mithilfe von Microsoft Entra PowerShell

Gastkonten in Microsoft Entra ID externen Benutzern den Zugriff auf bestimmte Ressourcen wie Dateien, Teams oder Websites ermöglichen, ohne Vollmitglieder Ihrer Organisation zu sein. Diese Konten werden in der Regel für die Zusammenarbeit mit Partnern, Auftragnehmern oder Kunden verwendet, die temporären Zugriff auf die Ressourcen Ihrer Organisation benötigen.

Die effektive Verwaltung von Gastkonten ist entscheidend für die Aufrechterhaltung der Sicherheit und Integrität der Daten Ihrer Organisation. Als Administrator müssen Sie sicherstellen, dass Gastkonten nur über die erforderlichen Berechtigungen und den Zugriff auf die gewünschten Aufgaben verfügen. Die regelmäßige Überprüfung und Überwachung dieser Konten ist auch wichtig, um inaktive oder abgelaufene Konten zu identifizieren, die entfernt werden sollten. Diese Übung hilft nicht nur, potenzielle Sicherheitsrisiken zu reduzieren, sondern sorgt auch für eine effiziente Nutzung der Ressourcen Ihrer Organisation. Indem Sie Gastkonten gut verwalten, können Sie eine sichere und produktive Umgebung für die externe Zusammenarbeit bereitstellen.

Voraussetzungen

Um Gastbenutzer mit Microsoft Entra PowerShell zu verwalten, benötigen Sie Folgendes:

Einladen von Gastbenutzerkonten

Sie können Gastbenutzer mithilfe von Microsoft Entra PowerShell zu Ihrer Organisation einladen. Dieser Vorgang ermöglicht externen Benutzern den Zugriff auf bestimmte Ressourcen in Ihrer Organisation, ohne Vollmitglieder zu sein. Sie können einen einzelnen Gastbenutzer einladen oder mehrere Gastbenutzer gleichzeitig einladen.

Einladen eines einzelnen Gastbenutzerkontos

Einen einzelnen Gastbenutzer mit mindestens der Rolle „Gasteinladender“ in Ihre Organisation einladen.

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

Dieses Skript sendet eine Einladung an einen Gastbenutzer mit der E-Mail-Adresse guestUser@contoso.comund leitet sie bei der Annahme an https://contoso.com . Die folgende Ausgabe zeigt die Details des eingeladenen Gastbenutzers.

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

Masseneinladung von Gastbenutzerkonten

So laden Sie Gastbenutzer in Ihre Organisation massenweise ein:

  1. Vorbereiten der CSV-Datei

    Erstellen Sie in Microsoft Excel eine CSV-Datei mit der Liste der eingeladenen Benutzernamen und E-Mail-Adressen. Achten Sie darauf, die Spaltenüberschriften "Name " und " E-Mail " einzuschließen.

    Erstellen Sie beispielsweise ein Arbeitsblatt im folgenden Format:

    Name E‑Mail
    Reed Smith rsmith@contoso.com
    Hayden Cook hcook@fabricam.com
    Isabel García igarcia@contoso.com

Speichern Sie die Datei als C:\BulkInvite\Invitations.csv oder an einem beliebigen Speicherort Ihrer Wahl.

Wenn Sie Excel nicht haben, können Sie eine CSV-Datei mit einem beliebigen Texteditor erstellen, z. B. mit dem Editor. Trennen Sie Werte durch Kommas und Zeilen durch eine neue Zeile.

Stellen Sie eine Verbindung zu Microsoft Entra mit mindestens der Rolle „Guest Inviter“ her.

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
}

Dieses Skript importiert eine Liste von Einladungen aus einer CSV-Datei. Dabei wird eine benutzerdefinierte Nachricht für die eingeladenen Benutzer definiert, und anschließend wird jede Einladung durchlaufen, um jedem Benutzer eine Einladung an seine E-Mail-Adresse zu senden.

Die folgende Ausgabe zeigt die Details der eingeladenen Gastbenutzer.

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…

Anzeigen und Exportieren von Gastbenutzerkonten

So zeigen Sie Gastbenutzer an und exportieren sie:

Stellen Sie eine Verbindung mit Microsoft Entra mit mindestens einer Rolle "Guest Inviter" her.

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"

Das Skript ruft alle Gastbenutzerkonten aus Microsoft Entra ID mit ihren Anzeigenamen, E-Mail-Adressen und Erstellungsdaten ab und zeigt dann die Liste dieser Gastbenutzer an.

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

Verwalten von Patenschaften für Gastbenutzer

In Microsoft Entra ID können Sie mithilfe des Gastsponsorings bestimmte Benutzer oder Gruppen als Sponsoren für Gastbenutzer festlegen und ihnen die Möglichkeit geben, den Zugriff und die Berechtigungen des Gastbenutzers zu verwalten. Dieses Feature ist nützlich für Organisationen, die den Zugriff externer Benutzer steuern und überwachen möchten.

Um das Sponsoring von Gastbenutzern zu verwalten, können Sie einen Sponsor von einem Gastbenutzer zuweisen, anzeigen und entfernen. Sie benötigen mindestens eine Benutzeradministratorrolle , um diese Aktionen auszuführen.

Zuweisen eines Sponsors zu einem Gastbenutzer

Das folgende Beispiel zeigt, wie Sie einem Gastbenutzer in Microsoft Entra ID einen Sponsor zuweisen. Sie können das New-EntraUserSponsor Cmdlet verwenden, um einem angegebenen Gastbenutzer einen Sponsor zuzuweisen.

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 diesem Beispiel wird einem Gastbenutzer in Microsoft Entra ID ein Sponsor zugewiesen. Der UserId Parameter gibt den Gastbenutzer an, und der SponsorId Parameter gibt den Sponsor an.

Sponsoren eines Gastbenutzers anzeigen

Das folgende Beispiel zeigt, wie Sie die Sponsoren eines Gastbenutzers in Microsoft Entra ID anzeigen. Sie können das Get-EntraUserSponsor Cmdlet verwenden, um die Sponsoren eines angegebenen Gastbenutzers abzurufen.

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

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

In diesem Beispiel werden die Sponsoren eines Gastbenutzers in Microsoft Entra ID abgerufen. Der UserId Parameter gibt den Gastbenutzer an.

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

Entfernen eines Sponsors von einem Gastbenutzer

Das folgende Beispiel zeigt, wie Sie einen Sponsor aus einem Gastbenutzer in Microsoft Entra ID entfernen. Sie können das Remove-EntraUserSponsor Cmdlet verwenden, um einen Sponsor aus einem angegebenen Gastbenutzer zu entfernen.

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 diesem Beispiel wird ein Sponsor von einem Gastbenutzer in Microsoft Entra ID entfernt. Der UserId Parameter gibt den Gastbenutzer an, und der SponsorId Parameter gibt den Sponsor an, der entfernt werden soll.

Einlösestatus des Gastbenutzers zurücksetzen

In Microsoft Entra ID ist das Zurücksetzen des Einlösungsstatus eines Gastbenutzers erforderlich, wenn Sie dem Benutzer erlauben möchten, seine Einladung erneut einzulösen. Dieses Feature ist hilfreich, wenn der Benutzer den Einlösungsprozess nicht abgeschlossen hat oder sein Status aus irgendeinem Grund zurückgesetzt werden muss. Das folgende Beispiel zeigt, wie der Einlösungsstatus eines Gastbenutzers zurückgesetzt wird, indem ihm eine neue Einladung gesendet wird.

Identifizieren Sie zuerst den Gastbenutzer und senden Sie eine neue Einladung: Dadurch wird der Einlösungsstatus zurückgesetzt, indem der Gastbenutzer erneut eingeladen wird.

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

Deaktivieren von Gastbenutzerkonten

Die folgenden Beispiele zeigen, wie Sie Gastbenutzerkonten in Microsoft Entra ID deaktivieren. Sie können ein einzelnes Gastkonto deaktivieren oder alle Gastkonten basierend auf Ihren Anforderungen deaktivieren.

Deaktivieren eines einzelnen Gastbenutzerkontos

So deaktivieren Sie ein einzelnes Gastbenutzerkonto:

Stellen Sie eine Verbindung mit Microsoft Entra mit mindestens einer Benutzeradministratorrolle her:

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 Gastbenutzerkonten deaktivieren

Führen Sie das folgende Cmdlet aus, um alle Gastbenutzerkonten zu deaktivieren.

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

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

Anzeigen und Exportieren abgelaufener Gastbenutzerkonten

So zeigen Sie abgelaufene Gastbenutzerkonten an und exportieren sie:

  1. Erweitern Sie das vorherige Beispiel, um Gastbenutzer abzurufen und bei jedem einzelnen zu prüfen, ob er abgelaufen ist. In diesem Beispiel wird davon ausgegangen, dass Gastkonten 90 Tage nach der Erstellung ablaufen.

    $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. Exportieren Sie den Bericht in eine CSV-Datei.

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

Abgelaufene Gastbenutzerkonten entfernen

Stellen Sie eine Verbindung mit Microsoft Entra mit mindestens einer Benutzeradministratorrolle her:

In diesem Beispiel wird davon ausgegangen, dass Gastkonten 90 Tage nach der Erstellung ablaufen.

Hinweis

Dieses Skript entfernt alle Gastbenutzer, deren Konten abgelaufen sind. Diese Aktion ist unumkehrbar und sollte mit Vorsicht verwendet werden. Stellen Sie immer sicher, dass Sie über eine Sicherung oder einen Wiederherstellungsplan verfügen, bevor Sie Benutzerkonten entfernen.

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