Get-EntraUser

Mendapatkan pengguna.

Sintaks

GetQuery (Default)

Get-EntraUser

    [-Filter <String>]
    [-All]
    [-Top <Int32>]
    [-PageSize <Int32>]
    [-Property <String[]>]
    [<CommonParameters>]

GetByValue

Get-EntraUser

    [-SearchString <String>]
    [-All]
    [-Property <String[]>]
    [<CommonParameters>]

GetById

Get-EntraUser

    -UserId <String>
    [-All]
    [-Property <String[]>]
    [<CommonParameters>]

GetFiltered

Get-EntraUser

    [-All]
    [-Top <Int32>]
    [-PageSize <Int32>]
    [-EnabledFilter <String>]
    [-HasErrorsOnly]
    [-LicenseReconciliationNeededOnly]
    [-Synchronized]
    [-UnlicensedUsersOnly]
    [-Property <String[]>]
    [<CommonParameters>]

Deskripsi

Get-EntraUser Cmdlet mendapatkan pengguna dari Microsoft Entra ID.

Contoh

Contoh 1: Dapatkan tiga pengguna teratas

Connect-Entra -Scopes 'User.Read.All'
Get-EntraUser -Top 3
DisplayName      Id                                   Mail                  UserPrincipalName
-----------      --                                   ----                  -----------------
Angel Brown      cccccccc-2222-3333-4444-dddddddddddd AngelB@contoso.com    AngelB@contoso.com
Avery Smith      dddddddd-3333-4444-5555-eeeeeeeeeeee AveryS@contoso.com    AveryS@contoso.com
Sawyer Miller    eeeeeeee-4444-5555-6666-ffffffffffff SawyerM@contoso.com   SawyerM@contoso.com

Contoh ini menunjukkan cara mendapatkan tiga pengguna teratas dari Microsoft Entra ID. Anda dapat menggunakan -Limit sebagai alias untuk -Top.

Contoh 2: Mendapatkan pengguna berdasarkan ID

Connect-Entra -Scopes 'User.Read.All'
Get-EntraUser -UserId 'SawyerM@contoso.com'
DisplayName Id                                   Mail                                 UserPrincipalName
----------- --                                   ----                                 -----------------
Sawyer Miller bbbbbbbb-1111-2222-3333-cccccccccccc sawyerm@tenant.com sawyerm@tenant.com

Perintah ini mendapatkan pengguna yang ditentukan.

  • -UserId Menentukan ID sebagai nama prinsipal pengguna (UPN) atau UserId.

Contoh 3: Mencari di antara pengguna yang diambil

Connect-Entra -Scopes 'User.Read.All'
Get-EntraUser -SearchString 'New'
DisplayName        Id                                   Mail UserPrincipalName
-----------        --                                   ---- -----------------
New User88         bbbbbbbb-1111-2222-3333-cccccccccccc      demo99@tenant.com
New User           cccccccc-2222-3333-4444-dddddddddddd      NewUser@tenant.com

Cmdlet ini mendapatkan semua pengguna yang cocok dengan nilai SearchString terhadap karakter pertama di DisplayName atau UserPrincipalName.

Contoh 4: Mengambil kebijakan kata sandi pengguna

Connect-Entra -Scopes 'User.Read.All'
Get-EntraUser -UserId 'SawyerM@contoso.com' `
              -Property UserPrincipalName, PasswordPolicies |
    Select-Object UserPrincipalName,
                  @{
                      Name = "PasswordNeverExpires"
                      Expression = { $_.PasswordPolicies -contains "DisablePasswordExpiration" }
                  }
userPrincipalName            PasswordNeverExpires
-----------------            --------------------
SawyerM@contoso.com                 True

Contoh ini menunjukkan cara mendapatkan kebijakan kata sandi pengguna. Untuk memperbaruinya, jalankan Get-EntraUser -UserId SawyerM@contoso.com | Set-EntraUser -PasswordPolicies DisablePasswordExpiration.

Contoh 5: Laporan MFA per pengguna

Connect-Entra -scope 'User.Read.All', 'UserAuthenticationMethod.Read.All'
$users = Get-EntraUser -All -Select Id, UserPrincipalName, DisplayName
Write-Output "Amount of requests within `"fetchAll`": $($users.Count)"
$usersReport = [System.Collections.ArrayList]::new()
$users | ForEach-Object {

    $userProperties = @{
        Id                = $_.Id
        DisplayName       = $_.DisplayName
        UserPrincipalName = $_.UserPrincipalName
        PerUserMFAState   = (Get-EntraBetaUserAuthenticationRequirement -UserId $_.Id).PerUserMFAState
    }

    [void]$usersReport.Add([PSCustomObject]$userProperties)
}

$usersReport | Format-Table -AutoSize
UserPrincipalName       DisplayName       PerUserMFAState Id
-----------------       -----------       --------------- --
AngelB@contoso.com      Angel Brown       enforced        cccccccc-2222-3333-4444-dddddddddddd
AveryS@contoso.com      Avery Smith       disabled        dddddddd-3333-4444-5555-eeeeeeeeeeee
SawyerM@contoso.com     Sawyer Miller     enforced        eeeeeeee-4444-5555-6666-ffffffffffff
ChristieC@contoso.com   Christie Cline    enabled         bbbbbbbb-1111-2222-3333-cccccccccccc
PattiF@contoso.com      Patti Fernandez   disabled        aaaaaaaa-bbbb-cccc-1111-222222222222

Contoh ini menunjukkan laporan status MFA per pengguna.

Catatan: Microsoft merekomendasikan penggunaan kebijakan Akses Bersyar dan default keamanan untuk mengelola autentikasi multifaktor (MFA) alih-alih mengandalkan MFA warisan per pengguna.

Contoh 6: Mendapatkan pengguna menurut userPrincipalName

Connect-Entra -Scopes 'User.Read.All'
Get-EntraUser -Filter "userPrincipalName eq 'SawyerM@contoso.com'"
DisplayName Id                                   Mail UserPrincipalName
----------- --                                   ---- -----------------
Sawyer Miller    cccccccc-2222-3333-4444-dddddddddddd      SawyerM@contoso.com

Perintah ini mendapatkan pengguna yang ditentukan.

Contoh 7: Mendapatkan pengguna dengan MailNickname

Connect-Entra -Scopes 'User.Read.All'
Get-EntraUser -Filter "startsWith(MailNickname,'Ada')"
DisplayName     Id                                   Mail                                UserPrincipalName
-----------     --                                   ----                                -----------------
Mark Adams bbbbbbbb-1111-2222-3333-cccccccccccc Adams@contoso.com Adams@contoso.com

Dalam contoh ini, kami mengambil semua pengguna yang MailNickname-nya dimulai dengan Ada.

Contoh 8: Mendapatkan SignInActivity pengguna

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

Contoh ini menunjukkan cara mengambil SignInActivity pengguna tertentu dengan memilih properti.

Contoh 9: Mencantumkan pengguna dengan akun yang dinonaktifkan

Connect-Entra -Scopes 'User.Read.All'
Get-EntraUser -Filter "accountEnabled eq false" | Select-Object DisplayName, Id, Mail, UserPrincipalName
DisplayName        Id                                   Mail UserPrincipalName
-----------        --                                   ---- -----------------
New User           cccccccc-2222-3333-4444-dddddddddddd      NewUser@tenant.com

Contoh ini menunjukkan cara mengambil semua pengguna dengan akun yang dinonaktifkan.

Contoh 10: Mencantumkan pengguna yang berbasis di negara tertentu

Connect-Entra -Scopes 'User.Read.All'
$usersInCanada = Get-EntraUser -Filter "Country eq 'Canada'"
$usersInCanada | Select-Object Id, DisplayName, UserPrincipalName, OfficeLocation, Country | Format-Table -AutoSize
Id                                   DisplayName   UserPrincipalName         OfficeLocation   Country
--                                   -----------   -----------------         --------------   -------
cccccccc-2222-3333-4444-dddddddddddd  New User     NewUser@tenant.com        23/2102          Canada

Contoh ini menunjukkan cara mengambil semua pengguna yang berbasis di Kanada.

Contoh 11: Mencantumkan jumlah pengguna per departemen

Connect-Entra -Scopes 'User.Read.All'
$departmentCounts = Get-EntraUser -All | Group-Object -Property Department | Select-Object Name, @{Name="MemberCount"; Expression={$_.Count}}
$departmentCounts | Format-Table Name, MemberCount -AutoSize
Name                 MemberCount
----                 -----------
                               7
Engineering                    2
Executive Management           1
Finance                        1
HR                             1

Contoh ini menunjukkan cara mengambil jumlah pengguna di setiap departemen.

Contoh 12: Mencantumkan pengguna yang dinonaktifkan dengan lisensi aktif

Connect-Entra -Scopes 'User.Read.All'
$disabledUsersWithLicenses = Get-EntraUser -Filter "accountEnabled eq false" -All | Where-Object {
    $_.AssignedLicenses -ne $null -and $_.AssignedLicenses.Count -gt 0
}
$disabledUsersWithLicenses | Select-Object Id, DisplayName, UserPrincipalName, AccountEnabled | Format-Table -AutoSize
Id                                   DisplayName  UserPrincipalName           AccountEnabled
--                                   -----------  -----------------           --------------
cccccccc-2222-3333-4444-dddddddddddd  New User     NewUser@tenant.com          False

Contoh ini menunjukkan cara mengambil pengguna yang dinonaktifkan dengan lisensi aktif.

Contoh 13: Mengambil pengguna tamu dengan lisensi aktif

Connect-Entra -Scopes 'User.Read.All'
$guestUsers = Get-EntraUser -Filter "userType eq 'Guest'" -All
$guestUsersWithLicenses = foreach ($guest in $guestUsers) {
    if ($guest.AssignedLicenses.Count -gt 0) {
        [PSCustomObject]@{
            Id                = $guest.Id
            DisplayName       = $guest.DisplayName
            UserPrincipalName = $guest.UserPrincipalName
            AssignedLicenses  = ($guest.AssignedLicenses | ForEach-Object { $_.SkuId }) -join ", "
        }
    }
}
$guestUsersWithLicenses | Format-Table Id, DisplayName, UserPrincipalName, AssignedLicenses -AutoSize
Id                                   DisplayName  UserPrincipalName                                  AssignedLicenses
--                                   -----------  -----------------                                  ----------------
cccccccc-2222-3333-4444-dddddddddddd Sawyer Miller sawyerm_gmail.com#EXT#@contoso.com c42b9cae-ea4f-4ab7-9717-81576235ccac

Contoh ini menunjukkan cara mengambil pengguna tamu dengan lisensi aktif.

Contoh 14: Mencantumkan pengguna dengan lisensi tertentu

Connect-Entra -Scopes 'User.Read.All'
$skuId = (Get-EntraSubscribedSku | Where-Object { $_.SkuPartNumber -eq 'POWERAPPS_DEV' }).SkuId
Get-EntraUser -Filter "assignedLicenses/any(l:l/skuId eq $skuId)" -Select id, displayName, userPrincipalName, userType, accountEnabled, assignedLicenses |
Select-Object id, displayName, userPrincipalName, userType, accountEnabled | Format-Table -AutoSize
id                                   displayName     userPrincipalName        userType accountEnabled
--                                   -----------     -----------------        -------- --------------
cccccccc-2222-3333-4444-dddddddddddd Angel Brown     AngelB@contoso.com       Member   True
dddddddd-3333-4444-5555-eeeeeeeeeeee Avery Smith     AveryS@contoso.com       Member   True

Contoh ini menunjukkan cara mengambil pengguna dengan lisensi tertentu.

Contoh 15: Mengambil pengguna tanpa manajer

Connect-Entra -Scopes 'User.Read.All'
$allUsers = Get-EntraUser -All
$usersWithoutManagers = foreach ($user in $allUsers) {
    $manager = Get-EntraUserManager -ObjectId $user.Id -ErrorAction SilentlyContinue
    if (-not $manager) {
        [PSCustomObject]@{
            Id                = $user.Id
            DisplayName       = $user.DisplayName
            UserPrincipalName = $user.UserPrincipalName
        }
    }
}
$usersWithoutManagers | Format-Table Id, DisplayName, UserPrincipalName -AutoSize
Id                                   DisplayName     UserPrincipalName
--                                   -----------     -----------------
cccccccc-2222-3333-4444-dddddddddddd  New User       NewUser@tenant.com
bbbbbbbb-1111-2222-3333-cccccccccccc  Sawyer Miller  SawyerM@contoso.com

Contoh ini menunjukkan cara mengambil pengguna tanpa manajer.

Contoh 16: Mencantumkan semua pengguna tamu

Connect-Entra -Scopes 'User.Read.All'
$guestUsers = Get-EntraUser -Filter "userType eq 'Guest'" -All
$guestUsers | Select-Object DisplayName, UserPrincipalName, Id, createdDateTime, creationType, accountEnabled, UserState | Format-Table -AutoSize
DisplayName     UserPrincipalName                                 Id                                   CreatedDateTime       CreationType   AccountEnabled  UserState
-----------     -----------------                                 --                                   ---------------       ------------   --------------  ---------
Sawyer Miller   sawyerm_gmail.com#EXT#@contoso.com                bbbbbbbb-1111-2222-3333-cccccccccccc 9/13/2024 6:37:33 PM  Invitation     True            Accepted

Contoh ini menunjukkan cara mengambil daftar semua pengguna tamu.

Contoh 17: Mencantumkan lima pengguna yang baru dibuat

Get-EntraUser -All | Sort-Object -Property createdDateTime -Descending | Select-Object -First 5
DisplayName       Id                                   Mail                  UserPrincipalName
-----------       --                                   ----                  -----------------
Angel Brown       cccccccc-2222-3333-4444-dddddddddddd  AngelB@contoso.com    AngelB@contoso.com
Avery Smith       dddddddd-3333-4444-5555-eeeeeeeeeeee  AveryS@contoso.com    AveryS@contoso.com
Sawyer Miller     eeeeeeee-4444-5555-6666-ffffffffffff  SawyerM@contoso.com   SawyerM@contoso.com
Christie Cline    bbbbbbbb-1111-2222-3333-cccccccccccc  ChristieC@contoso.com ChristieC@contoso.com
Patti Fernandez   aaaaaaaa-bbbb-cccc-1111-222222222222  PattiF@contoso.com    PattiF@contoso.com

Contoh ini menunjukkan cara mengambil pengguna yang baru dibuat.

Contoh 18: Daftar pengguna dengan peran Administrator Global

Connect-Entra -Scopes 'User.Read.All', 'RoleManagement.Read.Directory'
$roleId = Get-EntraDirectoryRoleTemplate | Where-Object { $_.DisplayName -eq 'Global Administrator' } | Select-Object -ExpandProperty Id
$globalAdmins = Get-EntraDirectoryRoleAssignment -Filter "roleDefinitionId eq '$roleId'" | ForEach-Object {
    Get-EntraUser -UserId $_.PrincipalId
}
$globalAdmins | Select-Object Id, DisplayName, UserPrincipalName, CreatedDateTime, AccountEnabled | Format-Table -AutoSize
id                                   displayName   userPrincipalName        createdDateTime          accountEnabled
--                                   -----------   -----------------        ---------------          --------------
cccccccc-2222-3333-4444-dddddddddddd Angel Brown   AngelB@contoso.com       3/7/2024 12:34:59 AM     True
dddddddd-3333-4444-5555-eeeeeeeeeeee Avery Smith   AveryS@contoso.com       10/1/2024 9:47:06 AM     True

Contoh ini menunjukkan cara mencantumkan semua pengguna dengan peran tertentu, seperti Global Administrator. Microsoft merekomendasikan untuk menetapkan peran Administrator Global ke kurang dari lima orang untuk praktik terbaik. Lihat praktik terbaik.

Contoh 19: Mencantumkan semua Pengguna dengan sesi yang dicabut dalam 30 Hari terakhir

Connect-Entra -Scopes 'User.Read.All'
$pastDate = (Get-Date).AddDays(-30).ToUniversalTime()
Get-EntraUser | Where-Object { $_.signInSessionsValidFromDateTime -ge $pastDate } |
Select-Object DisplayName, UserPrincipalName, signInSessionsValidFromDateTime
displayName     userPrincipalName      signInSessionsValidFromDateTime
-----------     -----------------      -------------------------------
Angel Brown     AngelB@contoso.com     03/03/2025 16:13:47
Avery Smith     AveryS@contoso.com     03/03/2025 16:05:02

Contoh ini menunjukkan cara mencantumkan semua pengguna dengan sesi yang dicabut dalam 30 Hari terakhir.

Parameter

-All

Cantumkan semua halaman.

Properti parameter

Jenis:System.Management.Automation.SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-EnabledFilter

Memfilter pengguna berdasarkan status akun mereka. Nilai yang berlaku adalah EnabledOnly atau DisabledOnly. Ketika ditentukan, cmdlet menambahkan accountEnabled batasan ke ekspresi yang ada -Filter .

Properti parameter

Jenis:System.String
Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:Tidak

Kumpulan parameter

GetFiltered
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Filter

Menentukan pernyataan filter OData v4.0. Parameter ini mengontrol objek mana yang dikembalikan. Detail tentang kueri dengan OData dapat ditemukan di sini.

Properti parameter

Jenis:System.String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

GetQuery
Position:Named
Wajib:False
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-HasErrorsOnly

Mengembalikan hanya pengguna yang memiliki satu atau beberapa kesalahan provisi atau validasi layanan (muncul melalui serviceProvisioningErrors koleksi). Gunakan sakelar ini untuk mengidentifikasi identitas yang memerlukan remediasi administratif dengan cepat.

Properti parameter

Jenis:System.Management.Automation.SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False
Alias:Tidak

Kumpulan parameter

GetFiltered
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-LicenseReconciliationNeededOnly

Mengembalikan hanya pengguna yang kesalahan provisi layanannya termasuk masalah terkait lisensi yang menunjukkan bahwa rekonsiliasi lisensi diperlukan (misalnya, lisensi yang tidak mencukup, pelanggaran dependensi, paket yang saling eksklusif). Secara internal cmdlet cocok dengan pola kesalahan lisensi umum untuk mempersempit kumpulan hasil.

Properti parameter

Jenis:System.Management.Automation.SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False
Alias:Tidak

Kumpulan parameter

GetFiltered
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-PageSize

Ketika -PageSize ditentukan, perintah dapat melakukan beberapa panggilan jaringan untuk mengambil data dalam gugus (halaman), melanjutkan hingga mencapai batas yang ditentukan oleh -Top atau -Semua, tergantung pada mana yang digunakan.

Properti parameter

Jenis:System.Int32
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-Property

Menentukan properti yang akan dikembalikan.

Properti parameter

Jenis:

System.String[]

Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:Pilih

Kumpulan parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-SearchString

Menentukan string pencarian.

Properti parameter

Jenis:System.String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Kumpulan parameter

GetVague
Position:Named
Wajib:False
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-Synchronized

Mengembalikan hanya pengguna yang disinkronkan dari Active Directory lokal (pengguna dengan onPremisesSyncEnabled eq true). Ini berguna untuk membedakan identitas khusus cloud dari identitas terkelola hibrid.

Properti parameter

Jenis:System.Management.Automation.SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False
Alias:Tidak

Kumpulan parameter

GetFiltered
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Top

Menentukan jumlah maksimum rekaman yang akan dikembalikan.

Properti parameter

Jenis:System.Int32
Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:Limit

Kumpulan parameter

GetQuery
Position:Named
Wajib:False
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-UnlicensedUsersOnly

Mengembalikan hanya pengguna yang tidak memiliki lisensi yang ditetapkan (assignedLicenses hitungan sama dengan 0). Ini membantu mengidentifikasi pengguna yang mungkin belum memiliki akses layanan yang diperlukan.

Properti parameter

Jenis:System.Management.Automation.SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False
Alias:Tidak

Kumpulan parameter

GetFiltered
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-UserId

Menentukan ID (sebagai Nama Prinsipal Pengguna (UPN) atau UserId) pengguna di Microsoft Entra ID.

Properti parameter

Jenis:System.String
Nilai default:None
Mendukung wildcard:False
DontShow:False
Alias:ObjectId, UPN, Identity, Nama Pokok Pengguna

Kumpulan parameter

GetById
Position:Named
Wajib:True
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.