przez kilka lat używałem skryptu do wyszukiwania kont, które nie są już używane. jest w nim taki fragment:
# Get the current date
$currentDate = [System.DateTime]::Now
# Convert the local time to UTC format because all dates are expressed in UTC (GMT) format in Active Directory
$currentDateUtc = $currentDate.ToUniversalTime()
$lastLogonTimeStampLimit = $currentDateUtc.AddDays(-$MAXUSERIDLE)
$lastLogonIntervalLimit = $lastLogonTimeStampLimit.ToFileTime()

$searcher.Filter = "( &(objectCategory=person)(objectClass=user)(lastLogonTimeStamp< =$lastLogonIntervalLimit) )" $results=$searcher.findall()
i nagle, po tych kilq latach ktoś mi mówi - "ty, ale tu nie ma kont, które się w ogóle nie logowały"
UPS! /:
faktycznie - w takim wypadku lastLogonTimeStamp jest nullem a więc porównanie nie udaje się... poprawny filtr:
$searcher.Filter = "(&(objectCategory=person)(objectClass=user)(|(lastLogonTimeStamp< =$lastLogonIntervalLimit)(!lastLogonTimeStamp=*)))"

huh. jak ktoś chce cały skrypt - pisać.

eN.