LastLogonDate jest przekonwertowaną wersją LastLogonTimestamp i jest replikowany między DC z opóźnieniem do 14 dni. Ponieważ pytasz o 30 dni wstecz, LastLogonDate jest odpowiedni, jeśli rozumiesz ograniczenia. Więcej na ten temat później.
LastLogon NIE jest replikowany, ale zawiera rzeczywiste ostatnie logowanie użytkownika. Aby zapytać o to, musisz zapytać każdy DC w twojej domenie i wybrać najnowszy LastLogon, w przeciwnym razie nie otrzymasz ich rzeczywistego ostatniego logowania.
Teraz powiedzmy, że zapytasz LastLogonDate/Timestamp i sprawdzisz przez 30 dni, ponieważ ich opóźnienie w aktualizacji może wynosić do 14 dni, może to być do 14 dni starsze niż ich rzeczywiste ostatnie logowanie. To znaczy, że lastlogontimestamp może być 6/28, ale oni mogli się zalogować powiedzmy 7/5 i nie zaktualizować lastlogontimestamp. Tak więc sprawdzanie przez 30 dni względem lastlogontimestamp oznacza, że tak naprawdę sprawdzasz użytkowników, którzy nie logowali się od 15 do 30 dni. Jeśli chcesz sprawdzić tylko dla ponad 30 dni, możesz ustawić go na 45 dni i przegapić niektórych użytkowników, którzy nie zalogowali się od 30 do 44 dni.
Wchodzi Search-ADAccount:
PowerShell
1
|
Search-.ADAccount -AccountInactive -Timespan (New-TimeSpan -Days 30) -UsersOnly
|
Co jest łatwiejsze w użyciu, w mojej opinii. Pamiętając o tym, że Search-ADAccount patrzy na lastlogonTimestamp, który może być aktualizowany do 14 dni wstecz. Ale Search-ADAccount dodaje 15 dni do tego, co mu przekażesz, aby uwzględnić opóźnienie. Więc jeśli chcesz sprawdzić konta, które na pewno nie logowały się w ciągu ostatnich 30 dni, podajesz 30 dni. Następnie sprawdza lastlongontimestamp dla dat starszych niż 45 dni.
Niezależnie od tego, co robisz, to nie da ci wyników, o które ci chodzi. Aby nadal używać lastlogon, musisz sprawdzać każdy DC. Aby przejść na lastlogontimestamp (lub search-adaccount), musisz zaakceptować, że użytkownicy, którzy ostatnio logowali się od 30 do 44 dni, mogą lub nie mogą zostać pominięci.