Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los usuarios representan una cuenta profesional o educativa de Microsoft Entra o una cuenta personal de Microsoft en Microsoft Entra ID. El recurso de usuario de Microsoft Entra PowerShell es la representación de un usuario e incluye relaciones y recursos relevantes para el usuario.
El recurso de usuario proporciona una manera sencilla de acceder a los recursos de usuario y manipularlos sin tener que realizar llamadas adicionales, buscar información de autenticación específica y emitir directamente consultas en otros objetos de PowerShell Microsoft Entra.
Prerrequisitos
Para administrar usuarios con Microsoft Entra PowerShell, necesita lo siguiente:
- Una cuenta de usuario de Microsoft Entra. Si aún no tiene una, puede crear una cuenta de forma gratuita.
- Al menos el rol Administrador de aplicaciones en la nube.
- Módulo de PowerShell de Microsoft Entra instalado. Siga la guía de instalación del módulo Microsoft Entra PowerShell para instalar el módulo.
Puede acceder a la información de un usuario y administrar sus datos en su nombre o como una aplicación con su propia identidad.
Incorporación de un usuario
Para incorporar un usuario, cree una nueva cuenta de usuario en Microsoft Entra ID. Este proceso implica configurar el perfil del usuario, incluido su nombre para mostrar, dirección de correo electrónico y contraseña.
Creación de un usuario
En este ejemplo se crea un nuevo usuario.
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 salida muestra los detalles del usuario recién creado.
DisplayName Id Mail UserPrincipalName
----------- -- ---- -----------------
New User aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb NewUser@contoso.com
Creación masiva de usuarios
Para crear varios usuarios de forma masiva, puede usar un archivo CSV. El archivo CSV debe contener los atributos de usuario necesarios, como DisplayName, UserPrincipalNamey 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
}
| Primer Nombre | Apellido | DisplayName | Dirección de correo electrónico | Departamento | MailNickName |
|---|---|---|---|---|---|
| Adele | Vance | Adele Vance | adelev@contoso.com | Mercadotecnia | adelev |
La salida muestra los detalles de los usuarios recién creados.
DisplayName Id Mail UserPrincipalName
----------- -- ---- -----------------
Adele Vance aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb adelev@contoso.com
Actualizar la contraseña de un usuario
Para actualizar la contraseña de un usuario por administrador, use este comando:
Connect-Entra -Scopes 'Directory.AccessAsUser.All' $newPassword = '<strong-password>' $securePassword = ConvertTo-SecureString $newPassword -AsPlainText -Force Set-EntraUserPasswordProfile -UserId 'SawyerM@contoso.com' -Password $securePasswordPara actualizar la contraseña del usuario que ha iniciado sesión (autoservicio), use este comando:
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 $newPasswordEste comando permite a los usuarios cambiar sus propias contraseñas sin privilegios de administrador.
Cargar o recuperar una foto para el usuario.
Cargue una foto para un usuario.
Connect-Entra -Scopes 'User.ReadWrite.All' Set-EntraUserThumbnailPhoto -UserId 'SawyerM@contoso.com' -FilePath 'D:\UserThumbnailPhoto.jpg'En este ejemplo se establece la foto en miniatura del usuario especificado con el parámetro UserId en la imagen especificada con el parámetro FilePath.
Recuperar la foto de un usuario.
Connect-Entra -Scopes 'ProfilePhoto.Read.All' Get-EntraUserThumbnailPhoto -UserId 'SawyerM@contoso.com'En este ejemplo se muestra cómo recuperar la foto en miniatura de un usuario que se especifica a través del valor del
UserIdparámetro .
Concesión de roles administrativos a los usuarios en su organización
Conceder a los usuarios roles administrativos en su organización les permite realizar tareas específicas y administrar recursos. Puede asignar usuarios a roles como Administrador de grupos, Administrador de usuarios u otros roles personalizados.
Para obtener información sobre cómo asignar roles a los usuarios mediante Microsoft Entra PowerShell, consulte Asignación de roles a los usuarios.
Buscar usuarios
Puede buscar usuarios de su organización mediante varios atributos, como displayName, mailNickname, userPrincipalNamedepartment y jobTitle. En el ejemplo siguiente se muestra cómo buscar un usuario por userPrincipalName
Connect-Entra -Scopes 'User.Read.All'
Get-EntraUser -Filter "userPrincipalName eq 'SawyerM@contoso.com'"
La salida muestra los detalles del usuario basados en una búsqueda userPrincipalName.
DisplayName Id Mail UserPrincipalName
----------- -- ---- -----------------
Sawyer Miller aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb SawyerM@contoso.com SawyerM@contoso.com
Auditar a los usuarios según determinados criterios
Puede auditar a los usuarios según determinados criterios, como la actividad de inicio de sesión y las pertenencias a grupos. Esta característica le ayuda a realizar un seguimiento de la actividad del usuario y a administrar su acceso a los recursos.
Recuperación de la actividad de inicio de sesión de un usuario
En el ejemplo siguiente se muestra cómo recuperar la actividad de inicio de sesión de un usuario específico.
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 salida muestra la actividad de inicio de sesión del usuario.
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
Descargar la actividad de inicio de sesión de todos los usuarios
En el ejemplo siguiente se recuperan todas las cuentas de usuario con licencia y su última actividad de inicio de sesión correcta. Exporta los datos a un archivo CSV para su posterior análisis.
# 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: $_"
}
Este ejemplo recupera tanto las fechas del último inicio de sesión como las del último inicio de sesión correcto de todos los usuarios de su organización. A continuación, los datos se exportan a un archivo CSV denominado lastSignIns.csv en el C:\temp directorio .
Enumerar las pertenencias a grupos de un usuario
En el ejemplo siguiente se enumeran los grupos de los que es miembro un usuario.
Connect-Entra -Scopes 'User.Read'
Get-EntraUserMembership -UserId 'SawyerM@contoso.com' |
Select-Object Id, displayName, createdDateTime, '@odata.type' |
Format-Table -AutoSize
La salida muestra la pertenencia del usuario a grupos.
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
Use estos comandos para enumerar las entidades a las que pertenece un usuario:
- Get-EntraUserAdministrativeUnit : para recuperar una lista de unidades administrativas a las que pertenece un usuario.
- Get-EntraUserGroup : para recuperar una lista de grupos a los que pertenece un usuario.
- Get-EntraUserRole : para recuperar una lista de roles de directorio asignados a un usuario.
Obtener el responsable de un usuario, sus subordinados directos y asignar un responsable a un usuario
Obtener el responsable de un usuario.
Connect-Entra -Scopes 'User.Read.All' Get-EntraUserManager -UserId 'SawyerM@contoso.com' | Select-Object Id, displayName, userPrincipalName, createdDateTime, accountEnabled, userType | Format-Table -AutoSizeLa salida muestra el administrador del usuario.
id displayName userPrincipalName createdDateTime accountEnabled userType -- ----------- ----------------- --------------- -------------- -------- 11bb11bb-cc22-dd33-ee44-55ff55ff55ff Patti Fernandez PattiF@Contoso.com 10/7/2024 12:32:01 AM True MemberEnumerar los usuarios que informan a un usuario específico.
Connect-Entra -Scopes 'User.Read','User.Read.All' Get-EntraUserDirectReport -UserId 'SawyerM@contoso.com' | Select-Object Id, displayName, userPrincipalName, createdDateTime, accountEnabled, userType | Format-Table -AutoSizeLa salida muestra el informe directo del usuario.
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 MemberAsignar un administrador a un usuario.
Connect-Entra -Scopes 'User.ReadWrite.All' Set-EntraUserManager -UserId 'SawyerM@contoso.com' -ManagerId 'AdeleV@contoso.com'-
-UserId: especifica el identificador (como UserPrincipalName o User ObjectId) de un usuario en Microsoft Entra ID. -
-ManagerId: especifica el ID (como UserPrincipalName o User ObjectId) del objeto de Microsoft Entra ID que se va a asignar como responsable.
-
Enumerar usuarios sin administradores
En este ejemplo se enumeran los usuarios sin un administrador, lo que ayuda a identificar cuentas huérfanas, cuentas de servicio o perfiles mal configurados para la limpieza.
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 salida enumera los usuarios sin administradores.
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
Enumerar usuarios deshabilitados
En el ejemplo siguiente se genera una lista de cuentas deshabilitadas.
Connect-Entra -Scopes 'User.ReadWrite.All'
Get-EntraUser -Filter "accountEnabled eq false" | Select-Object DisplayName, Id, Mail, UserPrincipalName
La salida enumera los usuarios deshabilitados.
DisplayName Id Mail userPrincipalName
----------- -- ---- -----------------
Sawyer Miller hhhhhhhh-7777-8888-9999-iiiiiiiiiiii SawyerM@contoso.com
Kez Michael eeeeeeee-4444-5555-6666-ffffffffffff KezM@contoso.com