Microsoft Entra PowerShell ile kullanıcıları yönetme

Kullanıcılar, Microsoft Entra ID’deki iş veya okul için Microsoft Entra kullanıcı hesabını ya da kişisel bir Microsoft hesabını temsil eder. Microsoft Entra PowerShell'deki kullanıcı kaynağı bir kullanıcının temsilidir ve kullanıcıyla ilgili ilişkileri ve kaynakları içerir.

Kullanıcı kaynağı, ek çağrılar yapmak, belirli kimlik doğrulama bilgilerini aramak ve diğer Microsoft Entra PowerShell nesnelerine doğrudan sorgu göndermek zorunda kalmadan kullanıcı kaynaklarına erişmeniz ve bu kaynakları değiştirmeniz için basit bir yol sağlar.

Prerequisites

Microsoft Entra PowerShell ile kullanıcıları yönetmek için şunları yapmanız gerekir:

Kullanıcının bilgilerine erişebilir ve verilerini kendi adına veya kendi kimliğine sahip bir uygulama olarak yönetebilirsiniz.

Kullanıcı ekleme

Bir kullanıcıyı eklemek için, Microsoft Entra ID'de yeni bir kullanıcı hesabı oluşturursunuz. Bu işlem, görünen adı, e-posta adresi ve parolası dahil olmak üzere kullanıcının profilini ayarlamayı içerir.

Kullanıcı oluşturma

Bu örnek yeni bir kullanıcı oluşturur.

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

Çıktıda yeni oluşturulan kullanıcının ayrıntıları görüntülenir.

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

Kullanıcıları toplu oluşturma

Toplu olarak birden çok kullanıcı oluşturmak için BIR CSV dosyası kullanabilirsiniz. CSV dosyası , DisplayNameve UserPrincipalNamegibi PasswordProfilegerekli kullanıcı özniteliklerini içermelidir.

# 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
    }
İlk İsim Soyadı DisplayName E-posta Adresi Bölüm MailTakmaAdı
Adele Vance Adele Vance adelev@contoso.com Marketing adelev

Çıktıda yeni oluşturulan kullanıcıların ayrıntıları görüntülenir.

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

Kullanıcının parolasını güncelleştirme

  1. Kullanıcının parolasını yönetici tarafından güncelleştirmek için şu komutu kullanın:

    Connect-Entra -Scopes 'Directory.AccessAsUser.All'
    $newPassword = '<strong-password>'
    $securePassword = ConvertTo-SecureString $newPassword -AsPlainText -Force
    Set-EntraUserPasswordProfile -UserId 'SawyerM@contoso.com' -Password $securePassword
    
  2. Oturum açmış kullanıcının parolasını (self servis) güncelleştirmek için şu komutu kullanın:

    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
    

    Bu komut, kullanıcıların yönetici ayrıcalıkları olmadan kendi parolalarını değiştirmesine olanak tanır.

Kullanıcı için fotoğraf yükleme veya alma

  1. Bir kullanıcı için fotoğraf yükleyin.

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

    Bu örnek, UserId parametresiyle belirtilen kullanıcının küçük resmini FilePath parametresiyle belirtilen görüntüye ayarlar.

  2. Bir kullanıcının fotoğrafını alın.

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

    Bu örnek, UserId parametresinin değeri aracılığıyla belirtilen bir kullanıcının küçük resminin nasıl alınacağını gösterir.

Kuruluşunuzda kullanıcılara yönetici rolleri verme

Kuruluşunuzda kullanıcılara yönetici rolleri vermek, belirli görevleri gerçekleştirmelerine ve kaynakları yönetmelerine olanak tanır. Kullanıcıları Grup Yöneticisi, Kullanıcı Yöneticisi veya diğer özel roller gibi rollere atayabilirsiniz.

Microsoft Entra PowerShell kullanarak kullanıcılara rol atamayı öğrenmek için bkz. Kullanıcılara rol atama.

Kullanıcıları ara

, displayName, mailNicknameuserPrincipalNameve departmentgibi jobTitleçeşitli öznitelikleri kullanarak kuruluşunuzdaki kullanıcıları arayabilirsiniz. Aşağıdaki örnek, bir kullanıcının userPrincipalName ile nasıl aranacağını gösterir.

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

Çıktı, userPrincipalName aramasına göre kullanıcı ayrıntılarını gösterir.

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

Kullanıcıları belirli ölçütlere göre denetleme

Kullanıcıları oturum açma etkinliği ve grup üyelikleri gibi belirli ölçütlere göre denetleyebilirsiniz. Bu özellik, kullanıcı etkinliğini izlemenize ve kaynaklara erişimini yönetmenize yardımcı olur.

Kullanıcının oturum açma etkinliğini alma

Aşağıdaki örnek, belirli bir kullanıcının oturum açma etkinliğinin nasıl alınacağını gösterir.

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'

Çıktı, kullanıcının oturum açma etkinliğini gösterir.

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üm kullanıcıların oturum açma etkinliğini indirme

Aşağıdaki örnek tüm lisanslı kullanıcı hesaplarını ve son başarılı oturum açma etkinliğini alır. Daha fazla analiz için verileri bir CSV dosyasına aktarır.

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

Bu örnek, kuruluşunuzdaki tüm kullanıcılar için hem son oturum açma hem de son başarılı oturum açma tarihlerini alır. Veriler daha sonra dizininde lastSignIns.csv adlı C:\temp bir CSV dosyasına aktarılır.

Kullanıcının grup üyeliklerini listeleme

Aşağıdaki örnekte bir kullanıcının üyesi olduğu gruplar listeleniyor.

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

Çıktı, kullanıcının üyeliklerini gösterir.

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

Kullanıcının ait olduğu varlıkları listelemek için şu komutları kullanın:

Kullanıcının yöneticisini alma, doğrudan raporlar gönderme ve kullanıcıya yönetici atama

  1. Bir kullanıcının yöneticisini alın.

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

    Çıktı, kullanıcının yöneticisini gösterir.

    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. Belirli bir kullanıcıya rapor veren kullanıcıları listeleyin.

    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
    

    Çıkış, kullanıcının doğrudan raporunu gösterir.

    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. Bir kullanıcıya yönetici atama.

    Connect-Entra -Scopes 'User.ReadWrite.All'
    Set-EntraUserManager -UserId 'SawyerM@contoso.com' -ManagerId 'AdeleV@contoso.com'
    
    • -UserId- Microsoft Entra ID bir kullanıcının kimliğini (UserPrincipalName veya User ObjectId olarak) belirtir.
    • -ManagerId - Yönetici olarak atanacak Microsoft Entra ID nesnesinin kimliğini UserPrincipalName veya User ObjectId olarak belirtir.

Yöneticileri olmayan kullanıcıları listeleme

Bu örnekte, yöneticisi olmayan kullanıcılar listelenir ve temizlenmek üzere yalnız bırakılmış hesapların, hizmet hesaplarının veya yanlış yapılandırılmış profillerin tanımlanmasına yardımcı olur.

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

Çıktıda, yöneticileri olmayan kullanıcılar listelenir.

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

Devre dışı bırakılan kullanıcıları listeleme

Aşağıdaki örnek, devre dışı bırakılmış hesapların listesini oluşturur.

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

Çıktıda devre dışı bırakılan kullanıcılar listelenir.

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