Gérer les utilisateurs avec Microsoft Entra PowerShell

Les utilisateurs sont la représentation d’un compte d’utilisateur professionnel ou scolaire Microsoft Entra ou d’un compte Microsoft personnel dans Microsoft Entra ID. La ressource utilisateur dans Microsoft Entra PowerShell est la représentation d’un utilisateur et inclut des relations et des ressources pertinentes pour l’utilisateur.

La ressource utilisateur offre un moyen simple d’accéder aux ressources utilisateur et de les manipuler sans avoir à effectuer d’appels supplémentaires, rechercher des informations d’authentification spécifiques et émettre directement des requêtes sur d’autres objets PowerShell Microsoft Entra.

Prerequisites

Pour gérer les utilisateurs avec Microsoft Entra PowerShell, vous avez besoin des éléments suivants :

Vous pouvez accéder aux informations d’un utilisateur et gérer ses données en son nom ou en tant qu’application avec sa propre identité.

Intégrer un utilisateur

Pour intégrer un utilisateur, vous créez un compte d’utilisateur dans Microsoft Entra ID. Ce processus implique la configuration du profil de l’utilisateur, y compris son nom complet, son adresse e-mail et son mot de passe.

Créer un utilisateur

Cet exemple crée un utilisateur.

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

La sortie affiche les détails de l’utilisateur nouvellement créé.

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

Créer des utilisateurs en bloc

Pour créer plusieurs utilisateurs en bloc, vous pouvez utiliser un fichier CSV. Le fichier CSV doit contenir les attributs utilisateur nécessaires, tels que DisplayName, UserPrincipalNameet 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
    }
Prénom Nom de famille DisplayName Adresse e-mail Département MailNickName
Adele Vance Adele Vance adelev@contoso.com Marketing adelev

La sortie affiche les détails des utilisateurs nouvellement créés.

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

Mettre à jour le mot de passe d’un utilisateur

  1. Pour mettre à jour le mot de passe d’un utilisateur par administrateur, utilisez cette commande :

    Connect-Entra -Scopes 'Directory.AccessAsUser.All'
    $newPassword = '<strong-password>'
    $securePassword = ConvertTo-SecureString $newPassword -AsPlainText -Force
    Set-EntraUserPasswordProfile -UserId 'SawyerM@contoso.com' -Password $securePassword
    
  2. Pour mettre à jour le mot de passe de l’utilisateur connecté (libre-service), utilisez cette commande :

    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
    

    Cette commande permet aux utilisateurs de modifier leurs propres mots de passe sans privilèges d’administrateur.

Charger ou extraire une photo pour l’utilisateur

  1. Chargez une photo pour un utilisateur.

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

    Cet exemple montre comment définir la photo miniature de l’utilisateur spécifié avec le paramètre UserId sur l’image spécifiée avec le paramètre FilePath.

  2. Récupérez la photo d’un utilisateur.

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

    Cet exemple montre comment récupérer la photo miniature d’un utilisateur spécifié par le biais de la valeur du UserId paramètre.

Accorder aux utilisateurs des rôles d’administration dans votre organisation

L’octroi de rôles d’administration aux utilisateurs dans votre organisation leur permet d’effectuer des tâches spécifiques et de gérer les ressources. Vous pouvez affecter des utilisateurs à des rôles tels que l’administrateur de groupe, l’administrateur d’utilisateurs ou d’autres rôles personnalisés.

Pour savoir comment attribuer des rôles à des utilisateurs à l’aide de Microsoft Entra PowerShell, consultez Affecter des rôles aux utilisateurs.

Rechercher des utilisateurs

Vous pouvez rechercher des utilisateurs dans votre organisation à l’aide de différents attributs tels que displayName, , mailNicknameuserPrincipalName, department et jobTitle. L’exemple suivant montre comment rechercher un utilisateur par userPrincipalName

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

Le résultat affiche les détails de l’utilisateur à partir d’une recherche userPrincipalName.

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

Auditer les utilisateurs selon certains critères

Vous pouvez auditer les utilisateurs selon certains critères, tels que l’activité de connexion et les appartenances aux groupes. Cette fonctionnalité vous aide à suivre l’activité des utilisateurs et à gérer leur accès aux ressources.

Récupérer l’activité de connexion d’un utilisateur

L’exemple suivant montre comment récupérer l’activité de connexion d’un utilisateur spécifique.

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'

La sortie affiche l’activité de connexion de l’utilisateur.

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

Télécharger l’activité de connexion de tous les utilisateurs

L’exemple suivant récupère tous les comptes d’utilisateur sous licence et leur dernière activité de connexion réussie. Il exporte les données dans un fichier CSV pour une analyse plus approfondie.

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

Cet exemple récupère les dernières dates de connexion et de dernière connexion réussies pour tous les utilisateurs de votre organisation. Les données sont ensuite exportées vers un fichier CSV nommé lastSignIns.csv dans le C:\temp répertoire.

Répertorier les appartenances aux groupes d’un utilisateur

L’exemple suivant répertorie les groupes dont un utilisateur est membre.

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

La sortie affiche les appartenances de l’utilisateur.

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

Utilisez ces commandes pour répertorier les entités auxquelles appartient un utilisateur :

Obtenir le responsable d'un utilisateur, ses subordonnés directs et attribuer un responsable à un utilisateur

  1. Obtenir le responsable d'un utilisateur.

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

    La sortie affiche le gestionnaire de l’utilisateur.

    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. Répertorie les utilisateurs qui signalent à un utilisateur spécifique.

    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
    

    La sortie affiche le rapport direct de l’utilisateur.

    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. Attribuez un responsable à un utilisateur.

    Connect-Entra -Scopes 'User.ReadWrite.All'
    Set-EntraUserManager -UserId 'SawyerM@contoso.com' -ManagerId 'AdeleV@contoso.com'
    
    • -UserId: spécifie l’ID (en tant que UserPrincipalName ou User ObjectId) d’un utilisateur dans Microsoft Entra ID.
    • -ManagerId : spécifie l'ID sous forme de UserPrincipalName ou d'ObjectId utilisateur) de l'objet Microsoft Entra ID à attribuer comme responsable.

Répertorier les utilisateurs sans gestionnaires

Cet exemple répertorie les utilisateurs sans gestionnaire, ce qui permet d’identifier les comptes orphelins, les comptes de service ou les profils mal configurés pour le nettoyage.

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

La sortie répertorie les utilisateurs sans gestionnaires.

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

Répertorier les utilisateurs désactivés

L’exemple suivant génère une liste de comptes désactivés.

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

La sortie répertorie les utilisateurs désactivés.

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