Quản lý người dùng thông qua lệnh ghép ngắn Get-ADUser Powershell
Giới thiệu
Lệnh ghép ngắn Get-ADUser trong PowerShell cung cấp nhiều tham số để tìm một hoặc nhiều người dùng trong miền Active Directory (AD).
Theo mặc định, PowerShell chạy bằng tài khoản đã đăng nhập vào máy. Nếu muốn chạy lệnh bằng tài khoản khác, bạn có thể buộc PowerShell nhắc bạn về thông tin xác thực bằng cách sử dụng nút chuyển này trước lệnh của bạn:
$cred =Get-CredentialTìm kiếm một người dùng cụ thể
-Thông số nhận dạng
Sử dụng tham số -Identity nếu bạn biết người dùng AD nào bạn muốn nhận:
Get-ADUser -Identity “identifier”Chỉ định một trong những điều sau đây cho mã định danh:
- Tên phân biệt (DN)
- SamTên tài khoản
- HƯỚNG DẪN
- SID
Ví dụ
Get-ADUser -Identity "ABBEY.Crawford"Giới hạn tìm kiếm ở một OU cụ thể
-Tham số cơ sở tìm kiếm
Sử dụng tham số -SearchBase để giới hạn tìm kiếm trong một OU cụ thể, được chỉ định bởi tên phân biệt (DN):
Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "distinguishedName of OU"Ví dụ
Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "OU=Versacorp,DC=milkyway,DC=local"-Tham số phạm vi tìm kiếm
Kết hợp các tham số SearchBase và SearchScope để giới hạn tìm kiếm trong một OU cụ thể và một số cấp độ OU phụ được chỉ định. Ví dụ: để tìm tài khoản người dùng trong OU và các OU con trực tiếp của nó, hãy chỉ định giá trị 1 cho SearchScope. Để bao gồm cả OU con và cháu, hãy sử dụng giá trị 2.
Get-ADUser -SearchBase " distinguishedName of OU " -SearchScope "2"Ví dụ
Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "OU=Versacorp,DC=milkyway,DC=local" -SearchScope "2"Lọc các nhóm người dùng cụ thể
-Thông số bộ lọc
Nếu bạn không biết giá trị chính xác của bất kỳ số nhận dạng nào, bạn có thể chỉ định thuộc tính để lọc và giá trị cho bộ lọc, như sau:
Get-ADUser -Filter “filter value”Toán tử
| Operator | Meaning | Sample expression |
| -eq | Equal to | Name -like ‘Inga’ |
| -ne | Not equal to | Country -ne ‘US’ |
| -gt | Greater than | BadLogonCount -gt ‘0’ |
| -ge | Greater than or equal | Modified -ge ’06-04-2021 12:00:00? |
| -lt | Less than | LastLogonTimeStamp -lt ’01-08-2020? |
| -le | Less than or equal | Created -le ’01-08-2020? |
| -like | Wildcard search | Mail -like ‘*@xyz.com’ |
| -notlike | Wildcard search with negation | Department -notlike ‘*’ |
| -and | And | Country -eq ‘US’ -and Department -eq ‘Operations’ |
| -or | Or | Country -eq ‘US’ -or -Country -eq ‘UK’ |
Tìm người dùng có tên nhất định
Để tìm kiếm người dùng bằng tên hoặc một phần tên của họ, hãy sử dụng tham số -Filter với mệnh đề -like và một giá trị.
Ví dụ sau đây cho thấy cách sử dụng tham số Filter, có liên quan đến thuộc tính AD, GivenName. Nó trả về những người dùng có GivenName chứa Abbey.
Get-ADUser -Filter “givenname -Like ‘Abbey’”Tìm người dùng có tên giống nhau
Bạn có thể sửa đổi lệnh trước đó bằng toán tử ký tự đại diện để nhận tất cả người dùng có tên bắt đầu bằng một chuỗi cụ thể, như sau:
Get-ADUser -Filter "Name -like 'Abb*'" | Select Name,givenname,surname,samAccountName,distinguishedname | ftGTìm tất cả người dùng đã kích hoạt
Nếu bạn muốn xem tất cả người dùng được kích hoạt, bạn có thể sử dụng lệnh ghép ngắn này:
Get-ADUser -filter {Enabled -eq "true"} | ftTìm người dùng bị vô hiệu hóa
Việc tìm kiếm người dùng bị khuyết tật có thể khá có giá trị để hỗ trợ việc dọn dẹp AD. Sử dụng một lệnh đơn giản với một bộ lọc, “-Filter “Enabled -eq ‘false’” có thể trả về hàng trăm người dùng bị vô hiệu hóa vì một số công ty muốn giữ các đối tượng Active Directory của họ cho mục đích kiểm tra. Sử dụng bộ lọc -SearchBase với OU cụ thể để giới hạn kết quả. Ví dụ: lệnh ghép ngắn này sẽ tìm tất cả tài khoản người dùng bị vô hiệu hóa trong một OU cụ thể:
Get-ADUser -Filter “Enabled -eq 'false'” -SearchBase "CN=Users,DC=Knox,DC=lab" -Properties * | Select Name,Enabled |ftTìm người dùng có địa chỉ email
Để tìm tất cả người dùng được gán hộp thư, hãy sử dụng lệnh sau:
Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mailTìm tài khoản chưa đặt hết hạn mật khẩu
Để tăng cường bảo mật, bạn có thể muốn tìm tất cả các tài khoản có thuộc tính 'passwordneverexpires' được đặt thành true, như sau:
Get-ADUser -Filter {passwordneverexpires -eq "true"} | Select Name, sAMAccountNameTìm tài khoản người dùng cũ
Đôi khi, chúng tôi cần lọc ra những tài khoản người dùng đã không được sử dụng trong một thời gian. Dưới đây là cách tìm tất cả tài khoản người dùng chưa được sử dụng trong 60 ngày qua:
$CutoffDate = (Get-Date).AddDays(-60)
Get-ADUser -Filter "LastLogonDate -lt '$CutoffDate'" -Properties LastLogonDate | Select Name, LastLogonDateTìm người dùng được tạo vào một ngày cụ thể
Để xem tất cả tài khoản người dùng được tạo vào một ngày cụ thể trong Active Directory, bạn có thể sử dụng lệnh này:
Get-ADUser -Filter {Created -lt '7/30/2021'} | Select NameKết hợp nhiều bộ lọc
Bạn có thể kết hợp nhiều bộ lọc để xác định tiêu chí phức tạp để tìm kiếm người dùng.
ví dụ 1
Lệnh sau sẽ trả về tất cả người dùng được kích hoạt từ bộ phận Bán hàng:
Get-ADUser -Filter "Enabled -eq 'true' -and Department -like 'Sales'" -Properties * | Select Name, Department |ftVí dụ 2
Lệnh ghép ngắn sau sẽ trả về tất cả người dùng có thuộc tính bộ phận không rỗng và có tên bắt đầu bằng chữ A:
Get-ADUser -filter {Department -ne "null"} | Where-Object Name -like 'A*'Kiểm soát thuộc tính nào được hiển thị
-Thông số thuộc tính
Theo mặc định, lệnh Get-ADUser chỉ trả về một số tham số. Nếu bạn muốn danh sách thuộc tính mở rộng của người dùng, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity “Identifier” -Properties *Hiển thị một tập hợp thuộc tính cụ thể
Ngoài ra, bạn có thể liệt kê rõ ràng các thuộc tính mà bạn muốn xem cho người dùng:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,Enabled,mail,department,company,title,c,st,streetaddress |ftHiển thị tư cách thành viên nhóm
Để xem tư cách thành viên của người dùng, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity Abbey.crawford -Properties memberof | Select-Object -ExpandProperty memberofHiển thị địa chỉ email
Nếu bạn muốn xem địa chỉ email của một người dùng cụ thể, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,mail |ftHiển thị tên chính của người dùng (UPN)
Để truy xuất UPN của người dùng, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,userprincipalname |ftHiển thị tên tài khoản SAM
Để hiển thị tên tài khoản SAM của người dùng, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,samAccountName |ftHiển thị tên hiển thị
Nếu bạn muốn xem tên hiển thị của người dùng (ví dụ: vì nó có thể khác trong ADUC), bạn có thể sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,displayname |ftHiển thị tên phân biệt
Để xem tên phân biệt của người dùng, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,distinguishedname |ftHiển thị địa chỉ proxy
Nếu bạn muốn xem địa chỉ proxy của người dùng, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,proxyaddresses |ftHiển thị Trình quản lý của Người dùng
Để hiển thị tên tài khoản SAM của người quản lý người dùng, hãy sử dụng lệnh này:
Get-ADUser “User Identifier” -properties * | select amAccountName, @{Name=’Manager’;Expression={(Get-ADUser($_.manager)).samaccountname}}Hiển thị ID nhân viên
Để xem ID nhân viên của người dùng, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,employeeid |ftHiển thị số điện thoại
Để tìm tất cả số điện thoại của người dùng, hãy sử dụng lệnh này:
Get-ADUser -Identity “User Identifier” -Properties * | Select *Phone*Để hiển thị các giá trị này dưới dạng bảng, hãy sử dụng lệnh này:
Get-ADUser -Identity “User Identifier” -Properties * | Select Name, *Phone* | ftHiển thị ngày và giờ hết hạn mật khẩu
Để xem ngày hết hạn mật khẩu của một tài khoản, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity “User Identifier” -Properties msDS-UserPasswordExpiryTimeComputed | select Name, {[datetime]::FromFileTime($_.”msDS-UserPasswordExpiryTimeComputed”)}Hiển thị ngày tạo tài khoản
Để xem thời điểm tài khoản người dùng được tạo trong AD, hãy sử dụng lệnh này:
Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreatedHiển thị ngày và giờ đăng nhập lần cuối
Nếu bạn muốn xem lần cuối cùng người dùng đăng nhập vào bất kỳ hệ thống nào, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,lastlogondate |ftHiển thị ngày và giờ thay đổi mật khẩu cuối cùng
Để xem lần cuối người dùng thay đổi mật khẩu của họ là khi nào, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity Abbey.Crawford -properties PwdLastSet,PasswordLastSet | sort Name | ft Name,PwdLastSet,PasswordLastSetHiển thị giá trị của thuộc tính mở rộng
Các tổ chức có thể sử dụng thuộc tính tiện ích mở rộng AD để lưu trữ thông tin bổ sung về người dùng. Ví dụ: thông tin giấy phép O365 có thể được lưu trữ trong ExtensionAttribution1. Để xem thông tin này, hãy sử dụng lệnh ghép ngắn này:
Get-ADUser -Identity “Abbey.Crawford” -Properties * | Select sAMAccountName, extensionAttribute1Sắp xếp đầu ra
Để sắp xếp đầu ra của lệnh Get-ADUser bằng một thuộc tính cụ thể, hãy sử dụng lệnh sau:
Get-ADUser -Filter * | Select Name | Sort-Object -Property NameXuất dữ liệu sang tệp CSV
Ví dụ 1
Lệnh sau sẽ tìm tất cả tài khoản người dùng được tạo trong 180 ngày qua, sắp xếp chúng theo tên và xuất thông tin đã chọn về chúng sang tệp CSV:
Get-ADUser -filter * -properties * | Where-Object { $_.created -gt (get-date).AddDays(-180)} | select-object Name, Created | sort Name | export-csv C:\Accounts.csv -NoTypeInformationVí dụ 2
Lệnh bên dưới sẽ tìm tất cả người dùng trong một OU cụ thể và xuất các chi tiết đã chọn về họ thành tệp CSV:
Đây là tệp CSV:
Phần kết luận
Lệnh Get-ADUser là một cách linh hoạt để tìm một hoặc nhiều người dùng đáp ứng các tiêu chí nhất định. Bạn có thể kiểm soát thuộc tính người dùng nào được hiển thị và cách sắp xếp thông tin cũng như xuất kết quả đầu ra sang tệp CSV.
Nếu bạn quan tâm đến giải pháp quản lý Active Directory và Azure AD toàn diện hơn, hãy xem Netwrix GroupID. Nó cung cấp một trình quản lý nâng cao hơn và cũng hoàn toàn tương thích với PowerShell.




































