Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Get-ADUser Lệnh ghép ngắn PowerShell cho phép bạn lấy thông tin về người dùng Active Directory, các thuộc tính của nó và tìm kiếm giữa những người dùng miền. Đây là một trong những lệnh ghép ngắn PowerShell phổ biến hơn để lấy thông tin từ AD. Sử dụng lệnh ghép ngắn Get-ADUser, bạn có thể lấy giá trị của bất kỳ thuộc tính nào của tài khoản người dùng AD, liệt kê người dùng miền có thuộc tính, xuất báo cáo người dùng sang tệp CSV và sử dụng các tiêu chí khác nhau để chọn và lọc người dùng miền.

Get-ADUser Cmdlet trong Mô-đun Active Directory PowerShell

Get-ADUser lệnh ghép ngắn được bao gồm trong một mô-đun đặc biệt để tương tác với Active Directory - Mô-đun Active Directory cho Windows PowerShell . Các lệnh ghép ngắn của mô-đun RSAT-AD-PowerShell cho phép bạn thực hiện các hoạt động khác nhau trên các đối tượng AD.

Lưu ý . Trước đây, để lấy thông tin về các thuộc tính của tài khoản người dùng AD, bạn phải sử dụng các công cụ khác nhau:bảng điều khiển ADUC (bao gồm các truy vấn AD đã lưu), tập lệnh VBS, dsquery, v.v. Tất cả các công cụ này có thể dễ dàng thay thế bằng lệnh ghép ngắn Get-ADUser .

Trong ví dụ này, chúng tôi sẽ trình bày cách sử dụng lệnh ghép ngắn Get-ADUser PowerShell để lấy thông tin về lần cuối cùng mật khẩu của người dùng được thay đổi, thời điểm mật khẩu hết hạn và các thuộc tính của người dùng khác.

Để sử dụng mô-đun RSAT-AD-PowerShell, bạn cần chạy bảng điều khiển PowerShell nâng cao và nhập mô-đun bằng lệnh:

Import-Module ActiveDirectory

Mô-đun RSAT-AD-PowerShell được cài đặt theo mặc định trên Windows Server 2012 (và mới hơn) khi bạn triển khai vai trò Dịch vụ miền Active Directory (AD DS). Để cài đặt mô-đun trên máy chủ Windows Server thành viên miền, hãy chạy lệnh:

Install-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Để sử dụng lệnh ghép ngắn Get-ADUser trên máy tính để bàn Windows 10/11, bạn cần cài đặt phiên bản RSAT thích hợp. Bạn có thể bật RSAT thông qua Cài đặt -> Ứng dụng -> Tính năng tùy chọn -> Thêm tính năng -> RSAT:Dịch vụ miền Active Directory và Công cụ dịch vụ thư mục hạng nhẹ .

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Bạn có thể cài đặt mô-đun RSAT AD trên Windows 10 và 11 với PowerShell:

Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

Nếu mô-đun RSAT-AD-PowerShell không được cài đặt trên máy tính, thì khi bạn chạy lệnh Get-ADUser, một lỗi sẽ xuất hiện:

Get-ADUser: The term 'get-aduser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Kiểm tra xem mô-đun đã được cài đặt chưa và nếu cần, hãy nhập mô-đun đó vào phiên PowerShell của bạn:

Import-Module ActiveDirectory

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Ngoài ra còn có một cách để sử dụng mô-đun AD-PowerShell mà không cần cài đặt RSAT trên máy tính của bạn. Chỉ cần sao chép tệp mô-đun chính và nhập mô-đun vào phiên PowerShell là đủ:

Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.dll"
Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.resources.dll"

Có thể lấy danh sách đầy đủ tất cả các đối số của lệnh ghép ngắn Get-ADUser như sau:

help Get-ADUser

Cách Tìm Thuộc tính Danh sách và Người dùng AD bằng Get-ADUser?

Để sử dụng lệnh ghép ngắn Get-ADUser, bạn không cần chạy nó trong tài khoản với quản trị viên miền hoặc các quyền được ủy quyền. Bất kỳ người dùng miền AD được ủy quyền nào cũng có thể chạy lệnh PowerShell để nhận giá trị của hầu hết các thuộc tính đối tượng AD (ngoại trừ các thuộc tính bí mật, hãy xem ví dụ trong bài viết Giải pháp mật khẩu quản trị viên cục bộ - LAPS). Nếu bạn cần chạy lệnh Get-ADUser trong một tài khoản khác, hãy sử dụng - Thông tin đăng nhập tham số.

Để hiển thị danh sách tất cả các tài khoản người dùng miền, hãy chạy lệnh sau:

Get-ADUser -filter *

Quan trọng . Bạn không nên chạy lệnh này trong các miền Active Directory có nhiều tài khoản người dùng. Điều này có thể đặt một tải nặng lên bộ điều khiển miền cung cấp thông tin AD.

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Sử dụng Set-ADUser lệnh ghép ngắn để thay đổi thuộc tính người dùng Active Directory.

Để hiển thị các thuộc tính của một người dùng cụ thể, hãy sử dụng –Identity tham số. Danh tính có thể là tên người dùng, thông tin đăng nhập (SAMAccountName), DN (Tên phân biệt), SID hoặc GUID.

Các lệnh PowerShell sau sẽ trả về cùng một kết quả cho cùng một tài khoản người dùng AD:

Get-ADUser –Identity b.smith
Get-ADUser –Identity "CN=Brian Smith,OU=Users,OU=Berlin,DC=woshub,DC=loc"
Get-ADUser –Identity "Brian Smith"

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Theo mặc định, lệnh ghép ngắn Get-ADUser chỉ trả về 10 thuộc tính người dùng cơ bản (trong số hơn 120 thuộc tính tài khoản người dùng):DistincishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, trạng thái tài khoản (Đã bật:Đúng / Sai theo UserAccountControl AD thuộc tính), v.v. Trong trường hợp này, đầu ra của lệnh ghép ngắn không chứa thông tin về thời gian thay đổi mật khẩu người dùng cuối cùng.

Để thực hiện truy vấn AD trên bộ điều khiển miền cụ thể, hãy sử dụng Máy chủ tùy chọn:

Get-ADUser –Server DC01.woshub.com –Identity tstuser

Nếu bạn cần lấy dữ liệu người dùng từ một miền AD khác, bạn cần chỉ định tên bộ điều khiển miền và thông tin đăng nhập để truy cập nó:

$ADcred = Get-Credential
Get-ADUSer tstuser -Server DC01.contoso.com -Credential $ADcred

Để hiển thị thông tin chi tiết về tất cả các thuộc tính người dùng có sẵn, hãy chạy lệnh sau:

Get-ADUser -identity tuser -properties *

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Lệnh ghép ngắn Get-ADUser với Thuộc tính * chuyển đổi liệt kê tất cả các thuộc tính của người dùng AD và giá trị của chúng (bao gồm cả những thuộc tính trống). Danh sách các thuộc tính người dùng tương tự có sẵn trong phần đính vào đồ họa Người dùng và Máy tính Active Directory (dsa.msc ) trong tab trình chỉnh sửa thuộc tính.

Sau đó, chúng tôi sẽ chuyển đến định dạng của đầu ra Get-ADUser để các thuộc tính người dùng cần thiết được hiển thị. Ví dụ:bạn muốn hiển thị các giá trị của các thuộc tính người dùng sau:

  • Mật khẩu đã hết hạn
  • PasswordLastSet
  • PasswordNeverExpires
  • LastLogonTimestamp

Chạy lệnh:

Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Bây giờ trong dữ liệu người dùng, có thông tin về trạng thái mật khẩu tài khoản (Hết hạn:Đúng / Sai), ngày thay đổi mật khẩu cuối cùng và thời gian của người dùng cuối cùng đăng nhập vào miền (lastlogontimestamp thuộc tính). Để hiển thị thông tin này ở dạng xem bảng thuận tiện hơn và loại bỏ tất cả các thuộc tính không cần thiết, hãy sử dụng Chọn-Đối tượng – Thuộc tính Định dạng-Bảng :

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Get-ADUser -SearchBase:Thu hút người dùng từ các đơn vị tổ chức cụ thể

Để chỉ hiển thị người dùng từ một vùng chứa miền cụ thể (Đơn vị tổ chức), hãy sử dụng - Cơ sở tìm kiếm tham số:

Get-ADUser -SearchBase 'OU=London,DC=woshub,DC=loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Nếu bạn cần chọn người dùng từ nhiều đơn vị tổ chức cùng một lúc, hãy sử dụng tập lệnh PowerShell sau:

$OUs = "OU=NY,DC=woshub,DC=com","OU=LA,DC=woshub,DC=com","OU=MA,DC=woshub,DC=com"
$OUs | foreach {Get-ADUser -SearchBase $_ -Filter * |select Name, Enabled}

Làm cách nào để lấy Địa chỉ email của người dùng từ AD bằng PowerShell?

Địa chỉ email người dùng là một trong những thuộc tính đối tượng người dùng trong Active Directory. Để liệt kê địa chỉ email của người dùng, bạn phải thêm Địa chỉ email trường thuộc tính của lệnh ghép ngắn Get-ADUser.

Get-ADUser -filter * -properties EmailAddress -SearchBase 'OU=Paris,OU-Fr,DC=woshub,DC=com'| select-object Name, EmailAddress

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Danh sách các tài khoản người dùng được kích hoạt có địa chỉ e-mail:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table

Để lấy danh sách người dùng Active Directory không có địa chỉ Email:

Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -eq $null

Ví dụ sau cho phép bạn xuất danh sách email công ty từ AD sang tệp CSV. Sau đó, bạn có thể nhập danh sách địa chỉ CSV này vào các ứng dụng email trên máy tính để bàn như Outlook hoặc Mozilla Thunderbird:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\adress_list.csv

Get-ADUser:Xuất Người dùng Active Directory sang CSV bằng PowerShell

Danh sách kết quả của người dùng miền với các thuộc tính có thể được xuất sang tệp văn bản:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

Hoặc bạn có thể xuất danh sách người dùng AD sang tệp CSV:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where {$_.name –like "*Dmitry*"} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\tmp\user-passwords-expires.csv -Append -Encoding UTF8

Danh sách người dùng AD có thể được xuất trực tiếp sang tệp Excel bằng PowerShell.

Ví dụ về bộ lọc Get-ADUser

Sử dụng –Filter , bạn có thể lọc danh sách tài khoản người dùng theo một hoặc nhiều thuộc tính. Điều này hữu ích cho việc tìm kiếm người dùng AD có thuộc tính phù hợp với các tiêu chí được chỉ định. Giá trị cho các thuộc tính cụ thể của người dùng Active Directory có thể được chỉ định làm đối số cho tham số này. Khi bạn sử dụng –Filter , lệnh ghép ngắn Get-ADUser sẽ chỉ hiển thị những người dùng phù hợp với tiêu chí bộ lọc.

Ví dụ:tôi muốn liệt kê các tài khoản người dùng đang hoạt động (Đã bật) có tên chứa “ Dmitry ”. Ví dụ dưới đây sử dụng nhiều bộ lọc; bạn có thể kết hợp các điều kiện bằng cách sử dụng các toán tử so sánh PowerShell hợp lý. Trong ví dụ này, các thuộc tính người dùng phải thỏa mãn cả hai điều kiện lọc ( -và ):

Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * |select name,enabled

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Tất cả các toán tử logic PowerShell có thể được sử dụng để chọn giá trị cho các thuộc tính người dùng (-eq , -ne , -gt , -ge , -lt , -le , -like , -notlike , -and , -or , v.v.)

Ngoài ra, bạn có thể sắp xếp danh sách người dùng kết quả theo một thuộc tính người dùng cụ thể với Đối tượng sắp xếp cmdlet. Bạn cũng có thể sử dụng Đối tượng ở đâu lệnh ghép ngắn để chỉ định nhiều tiêu chí lọc cùng một lúc.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase 'OU=NY,DC=woshub,DC=com'| where {$_.name –like "*Dmitry*" -and $_.Enabled -eq $true} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Do đó, bạn có thể nhận được danh sách người dùng có bất kỳ thuộc tính Active Directory cần thiết nào.

Để tìm kiếm người dùng theo một số thuộc tính cùng một lúc (inheritExchangeDN, proxyAddresses, SAMAccountName, Surname, DisplayName, SamAccountName, physicalDeliveryOfficeName, RDN và msExchMailNickname), bạn có thể sử dụng Độ phân giải tên mơ hồ (ANR ) tính năng:

Get-ADUser -Filter {anr -eq 'John'} | select Name

Gợi ý . Khi tra cứu người dùng Active Directory bằng Get-ADUser, từ góc độ hiệu suất, chỉ định tiêu chí bằng cách sử dụng Bộ lọc thuộc tính thích hợp hơn khi sử dụng đường dẫn đến Đối tượng ở đâu cmdlet. Trong trường hợp này, việc lọc kết quả lựa chọn sẽ được thực hiện trên bộ điều khiển miền và một tập hợp dữ liệu nhỏ hơn sẽ được chuyển đến máy tính của bạn qua mạng.

Bạn có thể sử dụng bộ lọc LDAP trong các truy vấn Get-ADUser. Bộ lọc LDAP được chỉ định bằng cách sử dụng –LdapFilter thuộc tính.

Get-ADUser -LDAPFilter '(&(department=it)(title=sysops))'

Ví dụ về PowerShell Get-ADUser

Hãy trình bày một số ví dụ lệnh PowerShell hữu ích hơn để truy vấn người dùng Active Directory với các bộ lọc khác nhau. Bạn có thể kết hợp chúng để có được danh sách các đối tượng người dùng AD cần thiết:

Hiển thị người dùng QUẢNG CÁO, có tên bắt đầu bằng Joe :

Get-ADUser -filter {name -like "Joe*"}

Bạn có thể sử dụng PowerShell để tính tổng số tài khoản người dùng trong Active Directory:

Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object

Tìm tài khoản người dùng Active Directory bị vô hiệu hóa:

Get-ADUser -Filter {Enabled -eq "False"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table

Bạn có thể kiểm tra ngày tạo tài khoản người dùng Active Directory bằng lệnh:

get-aduser -Filter * -Properties Name, WhenCreated | Select name, whenCreated

Bạn có thể lấy danh sách những người dùng Active Directory mới được thêm vào được tạo trong 24 giờ qua:


$lastday = ((Get-Date).AddDays(-1))
Get-ADUser -filter {(whencreated -ge $lastday)}

Liệt kê các tài khoản có mật khẩu hết hạn (bạn có thể định cấu hình các tùy chọn hết hạn mật khẩu trong chính sách mật khẩu miền):

Get-ADUser -filter {Enabled -eq $True} -properties name,passwordExpired| where {$_.PasswordExpired}|select name,passwordexpired

Bạn có thể sử dụng lệnh ghép ngắn Get-ADUser và Add-ADGroupMember để tạo nhóm người dùng AD động (tùy thuộc vào thành phố, chức danh công việc, phòng ban, v.v.).

Nhiệm vụ:đối với danh sách tài khoản người dùng được lưu trữ trong tệp văn bản (một tài khoản trên mỗi dòng), bạn cần lấy tên công ty của người dùng từ AD và lưu vào tệp CSV (bạn có thể dễ dàng nhập tệp này vào Excel).

Import-Csv c:\ps\users_list.csv | ForEach {
Get-ADUser -identity $_.user -Properties Name, Company |
Select Name, Company |
Export-CSV c:\ps\users_ad_list.csv -Append -Encoding UTF8
}

Những người dùng không thay đổi mật khẩu miền của họ trong 90 ngày qua:

$90_Days = (Get-Date).adddays(-90)
Get-ADUser -filter {(passwordlastset -le $90_days)}

Tìm tài khoản người dùng không hoạt động (không đăng nhập vào miền trong hơn 180 ngày). Thuộc tính lastLogonTimestamp được sử dụng để lấy lịch sử đăng nhập của người dùng vào miền:

$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } | ?{$_.Enabled –eq $True} |  Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize

Để lấy ảnh của người dùng từ Active Directory và lưu vào tệp jpg, hãy chạy các lệnh sau:

$usr = Get-ADUser sjoe -Properties thumbnailPhoto
$usr.thumbnailPhoto | Set-Content sjoe.jpg -Encoding byte

Để nhận danh sách các nhóm QUẢNG CÁO mà tài khoản người dùng là thành viên:

Get-AdUser sjoe -Properties memberof | Select memberof -expandproperty memberof

Liệt kê những người dùng từ đơn vị tổ chức là thành viên của một nhóm bảo mật miền cụ thể:

Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=woshub,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}

Liệt kê những người dùng từ đơn vị tổ chức là thành viên của một nhóm bảo mật miền cụ thể:

Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=woshub,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}

Liệt kê tất cả người dùng từ đơn vị tổ chức, ngoại trừ các thành viên của một nhóm cụ thể:

$Users = Get-ADUser -filter * -SearchBase ‘OU=Berlin,DC=woshub,DC=com’ -properties memberOf
ForEach ($User In $Users)
{
$Groups = -join @($User.memberOf)
If ($Groups -notlike '*Domain Admins*')
{
$User.Name
}
}

Xuất danh sách người dùng AD có tên Đơn vị tổ chức sang bảng Out-GridView:

get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridView

Get-ADUser:Tìm thông tin người dùng Active Directory với PowerShell

Kiểm tra xem tài khoản người dùng AD có tồn tại không:
$SamAccountName='jbrown'
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0)
{  Write-Host "User $SamAccountName doesn’t exist"}

Liệt kê các máy tính trong miền mà người dùng được phép đăng nhập (hạn chế đăng nhập thông qua thuộc tính LogonWorkstations AD).

Get-ADUser jbrown -Properties LogonWorkstations | Format-List Name, LogonWorkstations

Mẹo . Lệnh ghép ngắn Get-ADComputer được sử dụng để lấy thuộc tính máy tính hoặc tìm kiếm nhiều máy tính từ Active Directory.