Správa uživatelů pomocí Microsoft Entra PowerShellu

Uživatelé jsou reprezentací pracovního nebo školního uživatelského účtu Microsoft Entra nebo osobního účtu Microsoft v Microsoft Entra ID. Uživatelský prostředek v Microsoft Entra PowerShellu představuje uživatele a zahrnuje relace a prostředky, které jsou pro uživatele relevantní.

Uživatelský prostředek poskytuje jednoduchý způsob, jak získat přístup k prostředkům uživatelů a manipulovat s nimi, aniž byste museli provádět další volání, vyhledávat konkrétní ověřovací informace a přímo vydávat dotazy na jiné Microsoft Entra objekty PowerShellu.

Předpoklady

Pokud chcete spravovat uživatele pomocí Microsoft Entra PowerShellu, potřebujete:

Můžete získat přístup k informacím uživatele a spravovat jejich data jménem nebo jako aplikaci s vlastní identitou.

Přidat uživatele

Pokud chcete připojit uživatele, vytvoříte v Microsoft Entra ID nový uživatelský účet. Tento proces zahrnuje nastavení profilu uživatele, včetně jeho zobrazovaného jména, e-mailové adresy a hesla.

Vytvoření uživatele

Tento příklad vytvoří nového uživatele.

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

Výstup zobrazí podrobnosti o nově vytvořeném uživateli.

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

Hromadné vytváření uživatelů

K hromadnému vytvoření více uživatelů můžete použít soubor CSV. Soubor CSV by měl obsahovat nezbytné atributy uživatele, například DisplayName, UserPrincipalNamea 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
    }
Křestní jméno Příjmení DisplayName Emailová adresa Oddělení MailNickName
Adele Vance Adele Vance adelev@contoso.com Marketing adelev

Výstup zobrazí podrobnosti o nově vytvořených uživatelích.

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

Aktualizace hesla uživatele

  1. Pokud chcete aktualizovat heslo uživatele správcem, použijte tento příkaz:

    Connect-Entra -Scopes 'Directory.AccessAsUser.All'
    $newPassword = '<strong-password>'
    $securePassword = ConvertTo-SecureString $newPassword -AsPlainText -Force
    Set-EntraUserPasswordProfile -UserId 'SawyerM@contoso.com' -Password $securePassword
    
  2. Pokud chcete aktualizovat heslo pro přihlášeného uživatele (samoobslužné), použijte tento příkaz:

    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
    

    Tento příkaz umožňuje uživatelům změnit vlastní hesla bez oprávnění správce.

Nahrání nebo načtení fotky pro uživatele

  1. Nahrajte fotku pro uživatele.

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

    Tento příklad nastaví miniaturu fotky uživatele zadaného parametrem UserId na obrázek zadaný pomocí parametru FilePath.

  2. Získejte fotografii uživatele.

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

    Tento příklad ukazuje, jak načíst náhledovou fotografii uživatele určeného hodnotou parametru UserId.

Přidělte uživatelům ve vaší organizaci správcovské role

Udělení rolí pro správu uživatelů ve vaší organizaci jim umožňuje provádět konkrétní úlohy a spravovat prostředky. Uživatele můžete přiřadit k rolím, jako je správce skupiny, správce uživatelů nebo jiné vlastní role.

Informace o přiřazování rolí uživatelům pomocí Microsoft Entra PowerShellu najdete v tématu Přiřazení rolí uživatelům.

Vyhledávání uživatelů

Uživatele ve vaší organizaci můžete vyhledávat pomocí různých atributů, například displayName, mailNickname, userPrincipalName, department a jobTitle. Následující příklad ukazuje, jak vyhledat uživatele podle: userPrincipalName

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

Výstup zobrazuje podrobnosti o uživateli na userPrincipalName základě hledání.

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

Auditování uživatelů podle určitých kritérií

Uživatele můžete auditovat podle určitých kritérií, jako jsou přihlašovací aktivita a členství ve skupinách. Tato funkce vám pomůže sledovat aktivity uživatelů a spravovat jejich přístup k prostředkům.

Načíst přihlašovací aktivitu uživatele

Následující příklad ukazuje, jak načíst přihlašovací aktivitu konkrétního uživatele.

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'

Výstup zobrazuje přihlašovací aktivitu uživatele.

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

Stáhnout aktivitu přihlašování všech uživatelů

Následující příklad načte všechny licencované uživatelské účty a jejich poslední úspěšnou přihlašovací aktivitu. Exportuje data do souboru CSV pro další analýzu.

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

Tento příklad načte data posledního přihlášení i posledního úspěšného přihlášení pro všechny uživatele ve vaší organizaci. Data se pak exportují do souboru CSV s názvem lastSignIns.csv v C:\temp adresáři.

Výpis členství uživatele ve skupinách

Následující příklad uvádí skupiny, pro které je uživatel členem.

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

Výstup zobrazuje členství uživatele.

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

Pomocí těchto příkazů můžete zobrazit seznam entit, do nichž uživatel patří:

Získat nadřízeného uživatele, jeho přímé podřízené a přiřadit uživateli nadřízeného

  1. Získejte manažera uživatele.

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

    Výstup zobrazuje manažera uživatele.

    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. Vypsat uživatele, kteří jsou podřízeni konkrétnímu uživateli.

    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
    

    Výstup zobrazuje přímého podřízeného uživatele.

    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. Přiřazení manažera k uživateli.

    Connect-Entra -Scopes 'User.ReadWrite.All'
    Set-EntraUserManager -UserId 'SawyerM@contoso.com' -ManagerId 'AdeleV@contoso.com'
    
    • -UserId– určuje ID uživatele (jako UserPrincipalName nebo User ObjectId) v Microsoft Entra ID.
    • -ManagerId – určuje ID objektu Microsoft Entra ID ve formě UserPrincipalName nebo User ObjectId, který má být přiřazen jako správce.

Zobrazení seznamu uživatelů bez manažerů

Tento příklad vypisuje uživatele bez nadřízeného a pomáhá identifikovat osiřelé účty, účty služeb nebo chybně nakonfigurované profily určené k vyčištění.

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

Výstup zobrazí seznam uživatelů bez manažerů.

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

Seznam zakázaných uživatelů

Následující příklad vygeneruje seznam zakázaných účtů.

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

Výstup obsahuje deaktivované uživatele.

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