Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пользователи являются представлением рабочей или учебной учетной записи Microsoft Entra либо личной учетной записи Майкрософт в Microsoft Entra ID. Ресурс пользователя в Microsoft Entra PowerShell — это представление пользователя и включает связи и ресурсы, относящиеся к пользователю.
Ресурс пользователя предоставляет простой способ доступа к ресурсам пользователей и управления ими без необходимости выполнять дополнительные вызовы, искать конкретные сведения о проверке подлинности и напрямую выдавать запросы к другим объектам PowerShell Microsoft Entra.
Prerequisites
Чтобы управлять пользователями с помощью Microsoft Entra PowerShell, вам потребуется:
- Учетная запись пользователя Microsoft Entra. Если у вас еще нет учетной записи, вы можете создать ее бесплатно.
- По крайней мере роль администратора облачных приложений .
- Установлен модуль PowerShell Microsoft Entra. Следуйте инструкциям по установке модуля PowerShell Microsoft Entra, чтобы установить модуль.
Вы можете получить доступ к информации пользователя и управлять данными от их имени или в качестве приложения с собственным удостоверением.
Подключение пользователя
Чтобы подключить пользователя, создайте новую учетную запись пользователя в Microsoft Entra ID. Этот процесс включает настройку профиля пользователя, включая отображаемое имя, адрес электронной почты и пароль.
Создание пользователя
В этом примере создается новый пользователь.
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
В выходных данных отображаются сведения о только что созданном пользователе.
DisplayName Id Mail UserPrincipalName
----------- -- ---- -----------------
New User aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb NewUser@contoso.com
Массовое создание пользователей
Для массового создания нескольких пользователей можно использовать CSV-файл. CSV-файл должен содержать необходимые атрибуты пользователя, такие как DisplayName, UserPrincipalNameи 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
}
| Имя | Фамилия | DisplayName | Адрес электронной почты | Отдел | MailNickName |
|---|---|---|---|---|---|
| Адель | Vance | Адель Вэнс | adelev@contoso.com | Marketing | adelev |
В выходных данных отображаются сведения о недавно созданных пользователях.
DisplayName Id Mail UserPrincipalName
----------- -- ---- -----------------
Adele Vance aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb adelev@contoso.com
Обновление пароля пользователя
Чтобы обновить пароль пользователя администратором, используйте следующую команду:
Connect-Entra -Scopes 'Directory.AccessAsUser.All' $newPassword = '<strong-password>' $securePassword = ConvertTo-SecureString $newPassword -AsPlainText -Force Set-EntraUserPasswordProfile -UserId 'SawyerM@contoso.com' -Password $securePasswordЧтобы обновить пароль для вошедшего пользователя (самообслуживания), используйте следующую команду:
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Эта команда позволяет пользователям изменять собственные пароли без прав администратора.
Отправлять или получать фотографию пользователя.
Отправьте фотографию для пользователя.
Connect-Entra -Scopes 'User.ReadWrite.All' Set-EntraUserThumbnailPhoto -UserId 'SawyerM@contoso.com' -FilePath 'D:\UserThumbnailPhoto.jpg'Этот пример устанавливает миниатюру фотографии пользователя, указанного в параметре UserId, в качестве изображения, указанного в параметре FilePath.
Получение фотографии пользователя.
Connect-Entra -Scopes 'ProfilePhoto.Read.All' Get-EntraUserThumbnailPhoto -UserId 'SawyerM@contoso.com'В этом примере показано, как получить миниатюру фотографии пользователя, который задается значением параметра
UserId.
Предоставление пользователям административных ролей в организации
Предоставление пользователям административных ролей в организации позволяет выполнять определенные задачи и управлять ресурсами. Вы можете назначить пользователей таким ролям, как администратор группы, администратор пользователей или другие пользовательские роли.
Сведения о назначении ролей пользователям с помощью Microsoft Entra PowerShell см. в статье "Назначение ролей пользователям".
Поиск пользователей
Вы можете искать пользователей в организации с помощью различных атрибутов, таких как displayName, mailNicknameи userPrincipalNamedepartmentjobTitle . В следующем примере показано, как искать пользователя по userPrincipalName
Connect-Entra -Scopes 'User.Read.All'
Get-EntraUser -Filter "userPrincipalName eq 'SawyerM@contoso.com'"
В выходных данных отображаются сведения о пользователе на userPrincipalName основе поиска.
DisplayName Id Mail UserPrincipalName
----------- -- ---- -----------------
Sawyer Miller aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb SawyerM@contoso.com SawyerM@contoso.com
Аудит пользователей по определенным критериям
Вы можете проверять пользователей по определенным критериям, таким как действие входа и членство в группах. Эта функция помогает отслеживать действия пользователей и управлять доступом к ресурсам.
Получить сведения о входах пользователя
В следующем примере показано, как получить действие входа определенного пользователя.
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'
В выходных данных показано действие входа пользователя.
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
Скачать сведения о входах всех пользователей
В следующем примере извлекаются все лицензированные учетные записи пользователей и их последнее успешное действие входа. Он экспортирует данные в CSV-файл для дальнейшего анализа.
# 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: $_"
}
В этом примере извлекаются даты последнего входа и последнего успешного входа для всех пользователей в организации. Затем данные экспортируются в CSV-файл с именем lastSignIns.csv в каталоге C:\temp .
Вывести список групп, в которых состоит пользователь
В следующем примере перечислены группы, в которые входит пользователь.
Connect-Entra -Scopes 'User.Read'
Get-EntraUserMembership -UserId 'SawyerM@contoso.com' |
Select-Object Id, displayName, createdDateTime, '@odata.type' |
Format-Table -AutoSize
В выходных данных показаны членства пользователя.
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
Используйте следующие команды для перечисления сущностей, к которым принадлежит пользователь:
- Get-EntraUserAdministrativeUnit — для получения списка административных единиц, к которым принадлежит пользователь.
- Get-EntraUserGroup — для получения списка групп, к которому принадлежит пользователь.
- Get-EntraUserRole — для получения списка ролей каталога, назначенных пользователю.
Получить руководителя пользователя, его непосредственных подчиненных и назначить пользователю руководителя
Найдите менеджер пользователя.
Connect-Entra -Scopes 'User.Read.All' Get-EntraUserManager -UserId 'SawyerM@contoso.com' | Select-Object Id, displayName, userPrincipalName, createdDateTime, accountEnabled, userType | Format-Table -AutoSizeВ выходных данных показан менеджер пользователя.
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Вывести список пользователей, которые подчиняются определенному пользователю.
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В выходных данных отображается прямой отчет пользователя.
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Назначьте пользователю руководителя.
Connect-Entra -Scopes 'User.ReadWrite.All' Set-EntraUserManager -UserId 'SawyerM@contoso.com' -ManagerId 'AdeleV@contoso.com'-
-UserId— задает идентификатор (как userPrincipalName или User ObjectId) пользователя в Microsoft Entra ID. -
-ManagerId- задает идентификатор объекта Microsoft Entra ID (в формате UserPrincipalName или ObjectId пользователя), который следует назначить руководителем.
-
Список пользователей без руководителей
В этом примере перечислены пользователи без руководителя, помогающие определить потерянные учетные записи, учетные записи служб или неправильно настроенные профили для очистки.
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
В выходных данных перечислены пользователи без руководителей.
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
Список отключенных пользователей
В следующем примере создается список отключенных учетных записей.
Connect-Entra -Scopes 'User.ReadWrite.All'
Get-EntraUser -Filter "accountEnabled eq false" | Select-Object DisplayName, Id, Mail, UserPrincipalName
В выходных данных перечислены отключенные пользователи.
DisplayName Id Mail userPrincipalName
----------- -- ---- -----------------
Sawyer Miller hhhhhhhh-7777-8888-9999-iiiiiiiiiiii SawyerM@contoso.com
Kez Michael eeeeeeee-4444-5555-6666-ffffffffffff KezM@contoso.com