Verwalten von Benutzern mit Microsoft Entra PowerShell

Benutzer sind die Repräsentation eines Microsoft Entra-Arbeits- oder Schulkontos oder eines persönlichen Microsoft-Kontos in Microsoft Entra ID. Die Benutzerressource in Microsoft Entra PowerShell ist die Darstellung eines Benutzers und umfasst Beziehungen und Ressourcen, die für den Benutzer relevant sind.

Die Benutzerressource bietet eine einfache Möglichkeit, auf Benutzerressourcen zuzugreifen und sie zu bearbeiten, ohne zusätzliche Aufrufe ausführen zu müssen, bestimmte Authentifizierungsinformationen nachzuschlagen und Abfragen für andere Microsoft Entra PowerShell-Objekte direkt auszugeben.

Voraussetzungen

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

Sie können auf die Informationen eines Benutzers zugreifen und seine Daten in seinem Auftrag oder als App mit eigener Identität verwalten.

Benutzer hinzufügen

Um einen Benutzer zu integrieren, erstellen Sie in Microsoft Entra ID ein neues Benutzerkonto. Dieser Prozess umfasst das Einrichten des Benutzerprofils, einschließlich des Anzeigenamens, der E-Mail-Adresse und des Kennworts.

Erstellen eines Benutzers

In diesem Beispiel wird ein neuer Benutzer erstellt.

Connect-Entra -Scopes 'User.ReadWrite.All'
$passwordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$passwordProfile.Password = '<Strong-Password>'
$userParams = @{
    DisplayName = 'New User'
    PasswordProfile = $passwordProfile
    UserPrincipalName = 'NewUser@contoso.com'
    AccountEnabled = $true
    MailNickName = 'NewUser'
}
New-EntraUser @userParams

Die Ausgabe zeigt Details des neu erstellten Benutzers an.

DisplayName    Id                                     Mail    UserPrincipalName
-----------    --                                     ----    -----------------
New User       aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb           NewUser@contoso.com

Massenerstellung von Benutzern

Um mehrere Benutzer in Massen zu erstellen, können Sie eine CSV-Datei verwenden. Die CSV-Datei sollte die erforderlichen Benutzerattribute enthalten, wie z. B. DisplayName, UserPrincipalName und PasswordProfile.

# Connect to Microsoft Entra PowerShell
Connect-Entra -Scopes 'User.ReadWrite.All'

# Create a new Password Profile for the new users. We'll be using the same password for all new users in this example
$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.Password = '<Your-Password>'

# Import the csv file. You will need to specify the path and file name of the CSV file in this cmdlet
$NewUsers = import-csv -Path '<path-to-your-csv-file>'

# Loop through all new users in the file to create them in Microsoft Entra ID
ForEach ($user in $NewUsers) {
    # Create a new user in Microsoft Entra ID
    New-EntraUser -UserPrincipalName $user.'EmailAddress' -DisplayName $user.'DisplayName' -GivenName $user.'FirstName' -Surname $user.'LastName' -Department $user.'Department' -MailNickname $user.'MailNickname' -AccountEnabled $true -PasswordProfile $passwordProfile
    }
Vorname Nachname DisplayName E-Mail-Adresse Abteilung MailNickname (E-Mail-Spitzname)
Adele Vance Adele Vance adelev@contoso.com Marketing adelev

Die Ausgabe zeigt Details der neu erstellten Benutzer an.

DisplayName Id                                   Mail UserPrincipalName
----------- --                                   ---- -----------------
Adele Vance aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb      adelev@contoso.com

Aktualisieren des Kennworts eines Benutzers

  1. Verwenden Sie den folgenden Befehl, um das Kennwort eines Benutzers vom Administrator zu aktualisieren:

    Connect-Entra -Scopes 'Directory.AccessAsUser.All'
    $newPassword = '<strong-password>'
    $securePassword = ConvertTo-SecureString $newPassword -AsPlainText -Force
    Set-EntraUserPasswordProfile -UserId 'SawyerM@contoso.com' -Password $securePassword
    
  2. Verwenden Sie den folgenden Befehl, um das Kennwort für den angemeldeten Benutzer (Self-Serve) zu aktualisieren:

    Connect-Entra -Scopes 'Directory.AccessAsUser.All'
    $currentPassword = ConvertTo-SecureString '<strong-password>' -AsPlainText -Force
    $newPassword = ConvertTo-SecureString '<strong-password>' -AsPlainText -Force
    Set-EntraSignedInUserPassword -CurrentPassword $currentPassword -NewPassword $newPassword
    

    Mit diesem Befehl können Benutzer ihre eigenen Kennwörter ohne Administratorrechte ändern.

Foto für den Benutzer hochladen oder abrufen

  1. Laden Sie ein Foto für einen Benutzer hoch.

    Connect-Entra -Scopes 'User.ReadWrite.All'
    Set-EntraUserThumbnailPhoto -UserId 'SawyerM@contoso.com' -FilePath 'D:\UserThumbnailPhoto.jpg'
    

    In diesem Beispiel wird das Miniaturbild des Benutzers, der mit dem Parameter UserId angegeben wird, auf das Bild festgelegt, das mit dem Parameter FilePath angegeben wird.

  2. Rufen Sie das Foto eines Benutzers ab.

    Connect-Entra -Scopes 'ProfilePhoto.Read.All'
    Get-EntraUserThumbnailPhoto -UserId 'SawyerM@contoso.com'
    

    Dieses Beispiel zeigt, wie das Miniaturfoto eines Benutzers abgerufen wird, der durch den Wert des Parameters UserId angegeben wird.

Weisen Sie Benutzern in Ihrer Organisation Administratorrollen zu

Das Gewähren von Administratorrollen für Benutzer in Ihrer Organisation ermöglicht es ihnen, bestimmte Aufgaben auszuführen und Ressourcen zu verwalten. Sie können Benutzern Rollen wie Gruppenadministrator, Benutzeradministrator oder andere benutzerdefinierte Rollen zuweisen.

Informationen zum Zuweisen von Rollen zu Benutzern mithilfe von Microsoft Entra PowerShell finden Sie unter "Zuweisen von Rollen zu Benutzern".

Benutzer durchsuchen

Sie können in Ihrer Organisation nach Benutzern suchen, indem Sie verschiedene Attribute wie displayName, mailNickname, userPrincipalName, department und jobTitle verwenden. Das folgende Beispiel zeigt, wie Sie nach einem Benutzer suchen nach userPrincipalName

Connect-Entra -Scopes 'User.Read.All'
Get-EntraUser -Filter "userPrincipalName eq 'SawyerM@contoso.com'"

Die Ausgabe zeigt Benutzerdetails basierend auf einer userPrincipalName Suche an.

DisplayName      Id                                   Mail                 UserPrincipalName     
-----------      --                                   ----                 -----------------     
Sawyer Miller   aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb SawyerM@contoso.com  SawyerM@contoso.com   

Überwachen von Benutzern anhand bestimmter Kriterien

Sie können Benutzer anhand bestimmter Kriterien überwachen, z. B. Anmeldeaktivitäten und Gruppenmitgliedschaften. Dieses Feature hilft Ihnen, Benutzeraktivitäten nachzuverfolgen und den Zugriff auf Ressourcen zu verwalten.

Abrufen der Anmeldeaktivität eines Benutzers

Das folgende Beispiel zeigt, wie die Anmeldeaktivität eines bestimmten Benutzers abgerufen wird.

Connect-Entra -Scopes 'User.Read.All','AuditLog.Read.All'
Get-EntraUser -UserId 'SawyerM@contoso.com' -Property 'SignInActivity' | 
  Select-Object -Property Id, DisplayName, UserPrincipalName -ExpandProperty 'SignInActivity'

Die Ausgabe zeigt die Anmeldeaktivität des Benutzers an.

lastNonInteractiveSignInRequestId : bbbbbbbb-1111-2222-3333-aaaaaaaaaaaa
lastSignInRequestId               : cccccccc-2222-3333-4444-dddddddddddd
lastSuccessfulSignInDateTime      : 9/9/2024 1:12:13 PM
lastNonInteractiveSignInDateTime  : 9/9/2024 1:12:13 PM
lastSuccessfulSignInRequestId     : bbbbbbbb-1111-2222-3333-aaaaaaaaaaaa
lastSignInDateTime                : 9/7/2024 9:15:41 AM
id                                : aaaaaaaa-bbbb-cccc-1111-222222222222
displayName                       : Sawyer Miller
userPrincipalName                 : SawyerM@contoso.com

Herunterladen der Anmeldeaktivität aller Benutzer

Im folgenden Beispiel werden alle lizenzierten Benutzerkonten und ihre letzte erfolgreiche Anmeldeaktivität abgerufen. Sie exportiert die Daten zur weiteren Analyse in eine CSV-Datei.

# Connect to Microsoft Entra PowerShell  

Connect-Entra -Scopes 'User.Read.All','AuditLog.Read.All','Directory.Read.All'

try {
     Get-EntraUser -All -Property Id, UserPrincipalName, DisplayName, SignInActivity -ErrorAction Stop |
         Select-Object `
             Id, `
             UserPrincipalName, `
             DisplayName, `
             @{ Name = 'LastSignInDateTime';           Expression = { $_.SignInActivity.LastSignInDateTime } }, `
             @{ Name = 'LastSuccessfulSignInDateTime'; Expression = { $_.SignInActivity.LastSuccessfulSignInDateTime } } |
         Export-Csv -Path 'C:\temp\lastSignIns.csv' -NoTypeInformation -Encoding UTF8 -ErrorAction Stop

     Write-Host "Sign-in activity exported successfully to lastSignIns.csv"
 }
 catch {
     Write-Error "Failed to retrieve or export data: $_"
 }

In diesem Beispiel werden sowohl die letzte Anmeldung als auch die letzten erfolgreichen Anmeldedaten für alle Benutzer in Ihrer Organisation abgerufen. Die Daten werden dann in eine CSV-Datei mit dem Namen lastSignIns.csv im Verzeichnis C:\temp exportiert.

Auflisten der Gruppenmitgliedschaften eines Benutzers

Im folgenden Beispiel werden die Gruppen aufgelistet, bei denen ein Benutzer Mitglied ist.

Connect-Entra -Scopes 'User.Read'
Get-EntraUserMembership -UserId 'SawyerM@contoso.com' |
 Select-Object Id, displayName, createdDateTime, '@odata.type' |
 Format-Table -AutoSize

Die Ausgabe zeigt die Mitgliedschaften des Benutzers an.

Id                                   displayName                         createdDateTime      @odata.type
--                                   -----------                         ---------------      -----------
00aa00aa-bb11-cc22-dd33-44ee44ee44ee Contoso                             2024-10-06T08:49:16Z #microsoft.graph.group
22cc22cc-dd33-ee44-ff55-66aa66aa66aa Contoso marketing                   2024-10-07T01:17:28Z #microsoft.graph.group
55ff55ff-aa66-bb77-cc88-99dd99dd99dd Pacific Admin Unit                                       #microsoft.graph.administrativeUnit

Verwenden Sie diese Befehle, um die Entitäten auflisten, zu denen ein Benutzer gehört:

Abrufen des Vorgesetzten eines Benutzers, direkte Berichte und Zuweisen eines Vorgesetzten zu einem Benutzer

  1. Rufen Sie den Vorgesetzten eines Benutzers ab.

    Connect-Entra -Scopes 'User.Read.All'
    Get-EntraUserManager -UserId 'SawyerM@contoso.com' |
        Select-Object Id, displayName, userPrincipalName, createdDateTime, accountEnabled, userType |
        Format-Table -AutoSize
    

    Die Ausgabe zeigt den Vorgesetzten des Benutzers an.

    id                                    displayName     userPrincipalName                    createdDateTime           accountEnabled  userType
    --                                    -----------     -----------------                    ---------------           --------------  --------
    11bb11bb-cc22-dd33-ee44-55ff55ff55ff  Patti Fernandez PattiF@Contoso.com                 10/7/2024 12:32:01 AM      True           Member
    
  2. Listet die Benutzer auf, die einem bestimmten Benutzer unterstellt sind.

    Connect-Entra -Scopes 'User.Read','User.Read.All'
    Get-EntraUserDirectReport -UserId 'SawyerM@contoso.com' |
        Select-Object Id, displayName, userPrincipalName, createdDateTime, accountEnabled, userType |
        Format-Table -AutoSize
    

    Die Ausgabe zeigt den direkten Bericht des Benutzers an.

    id                                    displayName     userPrincipalName           createdDateTime       accountEnabled  userType
    --                                    -----------     -----------------           ---------------       --------------  --------
    bbbbbbbb-1111-2222-3333-cccccccccccc  Christie Cline  ChristieC@Contoso.com       10/7/2024 12:32:25 AM  True           Member
    aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb  Isaiah Langer   IsaiahL@Contoso.com         10/7/2024 12:33:16 AM  True           Member
    
  3. Zuweisen eines Managers zu einem Benutzer

    Connect-Entra -Scopes 'User.ReadWrite.All'
    Set-EntraUserManager -UserId 'SawyerM@contoso.com' -ManagerId 'AdeleV@contoso.com'
    
    • -UserId- Gibt die ID (als UserPrincipalName oder User ObjectId) eines Benutzers in Microsoft Entra ID an.
    • -ManagerId - Gibt die ID als UserPrincipalName oder User ObjectId des Microsoft Entra ID-Objekts an, das als Manager zugewiesen werden soll.

Benutzer ohne Vorgesetzte auflisten

In diesem Beispiel werden Benutzer ohne Vorgesetzte aufgelistet, die dazu beitragen, verwaiste Konten, Dienstkonten oder falsch konfigurierte Profile für die Bereinigung zu identifizieren.

Connect-Entra -Scopes 'User.Read.All'
$allUsers = Get-EntraUser -All
$usersWithoutManagers = foreach ($user in $allUsers) {
    $manager = Get-EntraUserManager -UserId $user.Id -ErrorAction SilentlyContinue
    if (-not $manager) {
        [PSCustomObject]@{
            Id                = $user.Id
            DisplayName       = $user.DisplayName
            UserPrincipalName = $user.UserPrincipalName
            UserType          = $user.userType
            AccountEnabled    = $user.accountEnabled
            CreatedDateTime   = $user.createdDateTime
        }
    }
}
$usersWithoutManagers | Format-Table Id, DisplayName, UserPrincipalName, CreatedDateTime, UserType, AccountEnabled  -AutoSize

Die Ausgabe listet Benutzer ohne Vorgesetzte auf.

Id                                   DisplayName         UserPrincipalName                           CreatedDateTime           UserType   AccountEnabled
--                                   -----------         -----------------                           ---------------           --------   --------------
cccccccc-2222-3333-4444-dddddddddddd New User           NewUser@tenant.com                         10/7/2024 2:24:26 PM      Member     True
bbbbbbbb-1111-2222-3333-cccccccccccc Sawyer Miller     SawyerM@contoso.com                        10/7/2024 12:33:36 AM     Member     True

Deaktivierte Benutzer auflisten

Im folgenden Beispiel wird eine Liste der deaktivierten Konten generiert.

Connect-Entra -Scopes 'User.ReadWrite.All'
Get-EntraUser -Filter "accountEnabled eq false" | Select-Object DisplayName, Id, Mail, UserPrincipalName

Die Ausgabe listet deaktivierte Benutzer auf.

DisplayName    Id                                   Mail userPrincipalName
-----------    --                                   ---- -----------------
Sawyer Miller  hhhhhhhh-7777-8888-9999-iiiiiiiiiiii      SawyerM@contoso.com
Kez Michael    eeeeeeee-4444-5555-6666-ffffffffffff      KezM@contoso.com