Tìm kiếm trang web

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-Credential

Tì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ử

OperatorMeaningSample expression
-eqEqual toName -like ‘Inga’
-neNot equal toCountry -ne ‘US’
-gtGreater thanBadLogonCount -gt ‘0’
-geGreater than or equalModified -ge ’06-04-2021 12:00:00?
-ltLess thanLastLogonTimeStamp -lt ’01-08-2020?
-leLess than or equalCreated -le ’01-08-2020?
-likeWildcard searchMail -like ‘*@xyz.com’
-notlikeWildcard search with negationDepartment -notlike ‘*’
-andAndCountry -eq ‘US’ -and Department -eq ‘Operations’
-orOrCountry -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 | ftG

Tì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"} | ft

Tì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 |ft

Tì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,mail

Tì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, sAMAccountName

Tì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, LastLogonDate

Tì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 Name

Kế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 |ft

Ví 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 |ft

Hiể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 memberof

Hiể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 |ft

Hiể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 |ft

Hiể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 |ft

Hiể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 |ft

Hiể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 |ft

Hiể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 |ft

Hiể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 |ft

Hiể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* | ft

Hiể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,WhenCreated

Hiể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 |ft

Hiể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,PasswordLastSet

Hiể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, extensionAttribute1

Sắ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 Name

Xuấ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 -NoTypeInformation

Ví 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.

Bài viết liên quan