Hantera användare med Microsoft Entra PowerShell

Användare är en representation av ett Microsoft Entra arbets- eller skolanvändarkonto eller ett personligt Microsoft-konto i Microsoft Entra ID. Användarresursen i Microsoft Entra PowerShell är en representation av en användare och innehåller relationer och resurser som är relevanta för användaren.

Användarresursen är ett enkelt sätt för dig att komma åt och manipulera användarresurser utan att behöva utföra extra anrop, söka efter specifik autentiseringsinformation och direkt utfärda frågor mot andra Microsoft Entra PowerShell-objekt.

Förutsättningar

Om du vill hantera användare med Microsoft Entra PowerShell behöver du:

Du kan komma åt en användares information och hantera deras data för deras räkning eller som en app med sin egen identitet.

Registrera en användare

Om du vill registrera en användare skapar du ett nytt användarkonto i Microsoft Entra ID. Den här processen omfattar att konfigurera användarens profil, inklusive deras visningsnamn, e-postadress och lösenord.

Skapa en användare

I det här exemplet skapas en ny användare.

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

Utdata visar information om den nyligen skapade användaren.

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

Massskapa användare

Om du vill skapa flera användare i grupp kan du använda en CSV-fil. CSV-filen ska innehålla nödvändiga användarattribut, till exempel DisplayName, UserPrincipalNameoch 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
    }
FirstName Efternamn DisplayName E-postadress Avdelning E-postsmeknamn
Adele Vance Adele Vance adelev@contoso.com Marketing adelev

Utdata visar information om de nyligen skapade användarna.

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

Uppdatera en användares lösenord

  1. Om du vill uppdatera en användares lösenord av administratören använder du det här kommandot:

    Connect-Entra -Scopes 'Directory.AccessAsUser.All'
    $newPassword = '<strong-password>'
    $securePassword = ConvertTo-SecureString $newPassword -AsPlainText -Force
    Set-EntraUserPasswordProfile -UserId 'SawyerM@contoso.com' -Password $securePassword
    
  2. Om du vill uppdatera lösenordet för den inloggade användaren (självbetjäning) använder du det här kommandot:

    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
    

    Med det här kommandot kan användare ändra sina egna lösenord utan administratörsbehörighet.

Ladda upp eller hämta ett foto för användaren

  1. Ladda upp ett foto för en användare.

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

    I det här exemplet anges miniatyrbilden för användaren som angetts med parametern UserId till den bild som angetts med parametern FilePath.

  2. Hämta en användares foto.

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

    Det här exemplet visar hur du hämtar miniatyrbilden för en användare som anges via parameterns UserId värde.

Bevilja användare administrativa roller i din organisation

Genom att ge användarna administrativa roller i organisationen kan de utföra specifika uppgifter och hantera resurser. Du kan tilldela användare till roller som gruppadministratör, användaradministratör eller andra anpassade roller.

Information om hur du tilldelar roller till användare med hjälp av Microsoft Entra PowerShell finns i Tilldela roller till användare.

Sök användare

Du kan söka efter användare i din organisation med hjälp av olika attribut som displayName, mailNickname, userPrincipalNamedepartment och jobTitle. I följande exempel visas hur du söker efter en användare efter userPrincipalName

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

Utdata visar användarinformation baserat på en userPrincipalName sökning.

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

Granska användare efter vissa kriterier

Du kan granska användare efter vissa kriterier, till exempel inloggningsaktivitet och gruppmedlemskap. Den här funktionen hjälper dig att spåra användaraktivitet och hantera deras åtkomst till resurser.

Hämta en användares inloggningsaktivitet

I följande exempel visas hur du hämtar inloggningsaktiviteten för en viss användare.

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'

Utdata visar användarens inloggningsaktivitet.

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

Ladda ned alla användares inloggningsaktivitet

I följande exempel hämtas alla licensierade användarkonton och deras senaste lyckade inloggningsaktivitet. Den exporterar data till en CSV-fil för ytterligare analys.

# 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: $_"
 }

Det här exemplet hämtar både senaste inloggningsdatum och senaste lyckade inloggningsdatum för alla användare i din organisation. Data exporteras sedan till en CSV-fil med namnet lastSignIns.csv i C:\temp katalogen.

Visa en lista över en användares gruppmedlemskap

I följande exempel visas de grupper som en användare är medlem i.

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

Utdata visar användarens medlemskap.

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

Använd dessa kommandon för att visa en lista över de entiteter som en användare tillhör:

Hämta en användares chef, dirigera rapporter och tilldela en chef till en användare

  1. Hämta en användares chef.

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

    Resultatet visar användarens chef.

    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. Visa en lista över användare som rapporterar till en viss användare.

    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
    

    Utdata visar användarens direktrapport.

    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. Tilldela en ansvarig till en användare.

    Connect-Entra -Scopes 'User.ReadWrite.All'
    Set-EntraUserManager -UserId 'SawyerM@contoso.com' -ManagerId 'AdeleV@contoso.com'
    
    • -UserId– anger ID :t (som UserPrincipalName eller User ObjectId) för en användare i Microsoft Entra ID.
    • -ManagerId – anger ID:t som ett UserPrincipalName eller User ObjectId) för Microsoft Entra ID-objektet som ska utses till chef.

Lista användare utan chefer

I det här exemplet visas användare utan en chef som hjälper till att identifiera överblivna konton, tjänstkonton eller felkonfigurerade profiler för rensning.

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

Utdata visar användare utan chefer.

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

Lista inaktiverade användare

I följande exempel genereras en lista över inaktiverade konton.

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

Utdata visar inaktiverade användare.

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