Tìm các đối tượng máy tính không hoạt động với LastLogonTimeStamp
Thỉnh thoảng tôi thấy mình phát minh lại đoạn mã này. Có lẽ bạn cũng vậy?
Vấn đề bạn muốn giải quyết là như sau:
Làm cách nào để bạn xác định các đối tượng máy tính lỗi thời trong Active Directory để thực hiện một số công việc quản lý quá hạn?
Có nhiều thuộc tính khác nhau có thể giúp bạn có được thông tin này. Tôi thường sử dụng thuộc tính sau:
Dấu thời gian đăng nhập cuối cùng
Tất cả các hệ điều hành Windows tham gia miền đều có tài khoản và mật khẩu trong Active Directory, giống như người dùng (ngoại trừ mật khẩu tài khoản máy tính dài 120 ký tự!).
Để vận hành đúng các tài khoản máy tính, hãy thực hiện đăng nhập vào miền giống như người dùng thực hiện.
Mỗi khi người dùng hoặc máy tính đăng nhập vào Active Directory, bộ điều khiển miền xác thực sẽ kiểm tra thuộc tính LastLogonTimeStamp của tài khoản. Nếu giá trị cũ hơn 14 ngày thì thuộc tính LastLogonTimeStamp được cập nhật theo thời gian hiện tại. Kiểm tra 14 ngày nhằm tránh làm quá tải quá trình sao chép AD và được kiểm soát bởi thuộc tính ms-DS-Logon-Time-Sync-Interval trong ngữ cảnh đặt tên miền.
Nếu giá trị của thuộc tính LastLogonTimeStamp cũ hơn 14 ngày rất nhiều thì đó là dấu hiệu cho thấy tài khoản không còn hoạt động nữa.
Nhận thông tin chi tiết đầy đủ về LastLogonTimeStamp tại đây.
Chuyển đổi LastLogonTimeStamp Từ FileTime sang DateTime
Giá trị của LastLogonTimeStamp thoạt nhìn có vẻ hơi kỳ lạ. Đây là ngày sinh nhật của tôi, ví dụ:
116961336000000000
Định dạng của thuộc tính là cấu trúc FileTime đo số lượng khoảng thời gian 100 nano giây kể từ ngày 1 tháng 1 năm 1601 (giờ UTC).
Vì hoàn toàn xấu hổ nên tôi sẽ không chuyển đổi giá trị trên cho bạn! Nhưng tôi sẽ chỉ cho bạn cách chuyển đổi thuộc tính LastLogonTimeStamp trong PowerShell. Rất đơn giản:
[datetime]::FromFileTime($Server.lastLogonTimeStamp)Với quá trình chuyển đổi đã sẵn sàng, hãy xem tập lệnh để cung cấp cho bạn danh sách đầy đủ từ Active Directory của bạn.
Cách lấy tất cả các đối tượng máy tính lỗi thời từ Active Directory bằng PowerShell
Sử dụng thông tin trước đó, giải pháp PowerShell có thể trông như thế này:
$Servers = Get-ADComputer -Properties lastLogonTimeStamp -Filter * -ResultSetSize $null
"Name;DN;lastLogonTimeStamp" | Out-File ".\ServerList.txt"
ForEach ($Server In $Servers)
{
$Output = $Server.Name + ";" + $Server.distinguishedName + ";" + [datetime]::FromFileTime($Server.lastLogonTimeStamp)
Write-Host $Output
$Output | Out-File ".\ServerList.txt" -Append
}Điều này sẽ giúp bạn có được một danh sách đẹp mắt được phân tách bằng dấu chấm phẩy với tên, tên phân biệt và LastLogonTimeStamp của tất cả các đối tượng máy tính trong Active Directory của bạn.
Danh sách được in ra bảng điều khiển và cũng được lưu vào tệp txt.
Sau đó, bạn có thể dán kết quả vào Excel và thực hiện tất cả các thao tác sắp xếp và lọc mà bạn muốn.
Tăng tốc quản lý Office 365 của bạn
Nếu bạn có AD kết hợp với tích hợp Office 365, bạn có thể đơn giản hóa rất nhiều việc quản lý người dùng, hộp thư và giấy phép của mình!
Cài đặt tiện ích mở rộng Easy365Manager cho công cụ AD Users & Computers và quản lý mọi thứ trong một công cụ nổi tiếng hợp nhất. Hãy là người thông minh:

