6.28. Finding Users Who Have Not Logged On Recently
Tip
This recipe requires the Windows Server 2003 domain functional level.
Problem
You want to determine which users have not logged on recently.
Solution
Using a graphical user interface
Open the Active Directory Users and Computers snap-in.
In the left pane, right-click on the domain and select Find.
Beside Find, select Common Queries.
Select the number of days beside Days since last logon.
Click the Find Now button.
Using a command-line interface
> dsquery user -inactive <NumWeeks
>
Using Perl
# This code finds the users that have not logged in over a period of time # ------ SCRIPT CONFIGURATION ------ # Domain and container/OU to check for inactive accounts my $domain = '<DomainDNSName
>'; # e.g. amer.rallencorp.com my $cont = 'cn=Users'; # set to empty string to query entire domain # Or set to a relative path in the domain: # e.g. cn=Users # Number of weeks a user needs to be inactive to be returned my $weeks_ago = <NumWeeks
>; # e.g. 4 # ------ END CONFIGURATION --------- use strict; use Win32::OLE; $Win32::OLE::Warn = 3; use Math::BigInt; # Need to convert the number of seconds since $weeks_ago # to a large integer for comparison against lastLogonTimestamp my $past_secs = time - 60*60*24*7*$weeks_ago; my $intObj = Math::BigInt->new($past_secs); $intObj = Math::BigInt->new($intObj->bmul('10 000 000')); my $past_largeint = Math::BigInt->new( $intObj->badd('116 444 736 000 000 000')); $past_largeint =~ s/^[+-]//; # Setup the ADO connections ...
Get Active Directory Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.