Gebruikers beheren met Microsoft Entra PowerShell

Gebruikers zijn de weergave van een Microsoft Entra werk- of schoolgebruikersaccount of een persoonlijke Microsoft-account in Microsoft Entra ID. De gebruikersresource in Microsoft Entra PowerShell is de weergave van een gebruiker en bevat relaties en resources die relevant zijn voor de gebruiker.

De gebruikersresource biedt een eenvoudige manier om gebruikersresources te openen en te bewerken zonder extra aanroepen uit te voeren, specifieke verificatiegegevens op te zoeken en query's rechtstreeks uit te voeren op andere Microsoft Entra PowerShell-objecten.

Prerequisites

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

U kunt de gegevens van een gebruiker openen en hun gegevens namens hen of als app beheren met een eigen identiteit.

Een gebruiker onboarden

Als u een gebruiker wilt onboarden, maakt u een nieuw gebruikersaccount in Microsoft Entra ID. Dit proces omvat het instellen van het profiel van de gebruiker, inclusief de weergavenaam, het e-mailadres en het wachtwoord.

Een gebruiker maken

In dit voorbeeld wordt een nieuwe gebruiker gemaakt.

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

De uitvoer toont de gegevens van de nieuw aangemaakte gebruiker.

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

Gebruikers in bulk maken

Als u meerdere gebruikers bulksgewijs wilt maken, kunt u een CSV-bestand gebruiken. Het CSV-bestand moet de benodigde gebruikerskenmerken bevatten, zoals DisplayName, UserPrincipalNameen 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
    }
Voornaam LastName DisplayName E-mailadres Afdeling MailBijnaam
Adele Vance Adele Vance adelev@contoso.com Marketing adelev

In de uitvoer worden details weergegeven van de zojuist gemaakte gebruikers.

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

Het wachtwoord van een gebruiker bijwerken

  1. Als u het wachtwoord van een gebruiker per beheerder wilt bijwerken, gebruikt u deze opdracht:

    Connect-Entra -Scopes 'Directory.AccessAsUser.All'
    $newPassword = '<strong-password>'
    $securePassword = ConvertTo-SecureString $newPassword -AsPlainText -Force
    Set-EntraUserPasswordProfile -UserId 'SawyerM@contoso.com' -Password $securePassword
    
  2. Gebruik deze opdracht om het wachtwoord voor de aangemelde gebruiker (selfservice) bij te werken:

    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
    

    Met deze opdracht kunnen gebruikers hun eigen wachtwoorden wijzigen zonder beheerdersbevoegdheden.

Een foto voor de gebruiker uploaden of ophalen

  1. Upload een foto voor een gebruiker.

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

    In dit voorbeeld wordt de miniatuurfoto van de gebruiker die is opgegeven met de parameter UserId ingesteld op de afbeelding die is opgegeven met de parameter FilePath.

  2. Haal de foto van een gebruiker op.

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

    In dit voorbeeld ziet u hoe u de miniatuurfoto ophaalt van een gebruiker die is opgegeven via de waarde van de UserId parameter.

Gebruikers beheerdersrollen verlenen in uw organisatie

Door gebruikers beheerdersrollen in uw organisatie te verlenen, kunnen ze specifieke taken uitvoeren en resources beheren. U kunt gebruikers toewijzen aan rollen zoals Groepsbeheerder, Gebruikersbeheerder of andere aangepaste rollen.

Zie Rollen toewijzen aan gebruikers met behulp van Microsoft Entra PowerShell voor meer informatie over het toewijzen van rollen aan gebruikers.

Gebruikers zoeken

U kunt zoeken naar gebruikers in uw organisatie met behulp van verschillende kenmerken, zoals displayName, mailNicknameuserPrincipalNameen departmentjobTitle. In het volgende voorbeeld ziet u hoe u naar een gebruiker kunt zoeken op userPrincipalName

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

In de uitvoer worden gebruikersgegevens weergegeven op basis van een userPrincipalName zoekopdracht.

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

Gebruikers beoordelen op basis van bepaalde criteria

U kunt gebruikers controleren op basis van bepaalde criteria, zoals aanmeldingsactiviteiten en groepslidmaatschappen. Met deze functie kunt u gebruikersactiviteiten bijhouden en hun toegang tot resources beheren.

De aanmeldingsactiviteit van een gebruiker ophalen

In het volgende voorbeeld ziet u hoe u de aanmeldingsactiviteit van een specifieke gebruiker ophaalt.

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'

In de uitvoer ziet u de aanmeldingsactiviteit van de gebruiker.

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

De aanmeldingsactiviteit van alle gebruikers downloaden

In het volgende voorbeeld worden alle gelicentieerde gebruikersaccounts en hun laatste geslaagde aanmeldingsactiviteit opgehaald. De gegevens worden geëxporteerd naar een CSV-bestand voor verdere analyse.

# 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 dit voorbeeld worden zowel de laatste aanmeldingsdatum als de laatste geslaagde aanmeldingsdatum opgehaald voor alle gebruikers in uw organisatie. De gegevens worden vervolgens geëxporteerd naar een CSV-bestand met de naam lastSignIns.csv in de C:\temp map.

Groepslidmaatschappen van een gebruiker weergeven

In het volgende voorbeeld worden de groepen vermeld waarvan een gebruiker lid is.

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

De uitvoer toont de lidmaatschappen van de gebruiker.

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

Gebruik deze opdrachten om de entiteiten weer te geven waartoe een gebruiker behoort:

De manager en directe ondergeschikten van een gebruiker ophalen en een manager toewijzen aan een gebruiker

  1. Vraag de manager van een gebruiker op.

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

    In de uitvoer ziet u de manager van de gebruiker.

    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. Vermeld de gebruikers die rapporteren aan een specifieke gebruiker.

    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
    

    De uitvoer toont het directe rapport van de gebruiker.

    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. Wijs een manager aan een gebruiker toe.

    Connect-Entra -Scopes 'User.ReadWrite.All'
    Set-EntraUserManager -UserId 'SawyerM@contoso.com' -ManagerId 'AdeleV@contoso.com'
    
    • -UserId- geeft de id (als UserPrincipalName of User ObjectId) van een gebruiker in Microsoft Entra ID.
    • -ManagerId- geeft de id op als UserPrincipalName of User ObjectId) van het Microsoft Entra ID-object dat moet worden toegewezen als manager.

Gebruikers zonder managers weergeven

In dit voorbeeld worden gebruikers zonder manager vermeld, zodat zwevende accounts, serviceaccounts of onjuist geconfigureerde profielen kunnen worden geïdentificeerd voor opschoning.

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

De uitvoer bevat gebruikers zonder managers.

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

Lijst met uitgeschakelde gebruikers weergeven

In het volgende voorbeeld wordt een lijst met uitgeschakelde accounts gegenereerd.

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

De uitvoer bevat uitgeschakelde gebruikers.

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