WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

wNT
plus

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Checking for Old Users

Keywords: 	  checking for old users

;Delete old trace log
;FileDelete("C:\incoming\debug.txt")
;Enable debug trace (turned off now)
;DebugTrace(@on,"C:\incoming\debug.txt")

;Get 95 or NT platform info
OStype = WinVersion(4) 

;Check for legal platform
IF OStype <> 4 && OStype <> 5 ; Is it Win NT or Win 9x ?
    exit ; if its NOT either we leave
endif

;We're only doing it for NT this week
IF OStype == 4 ; Win NT
    ;Load NT extender
    AddExtender("WWWNT32I.DLL") 
    ;get number of days to check from from operator
    inp=askline("Check Users Last Logon","Please enter the amount of days you would like to check for users last logon, 90 days is the default","90")
    ;Save todays date
    time=timeymdhms()
 
    ;Get our Domain controller
    dc=wntGetDc( "", "", 1)
    ;message("DC",dc)

    ;Get lsit of all users
    UserList = WntUserList(dc,2) 

    ;Get list of all PDC's and BDC's to check
    ServerList = wntServerList("","",16|8)

    ;Get count of the number of users found
    usercount=ItemCount(UserList,@tab)

    ;Get count of the number of PDC and BDS's found
    servercount=ItemCount(ServerList,@tab)
    

    ;Open a file to write output data to
    fil=Fileopen("userdata.txt","write") 
    
    ;FOR EACH user in the list
    for a=1 to usercount
        ;Get name of this user
        User=ItemExtract(a,UserList,@tab)
        ;initialize newestlastlogon variale
        newestlastlogon="0000:00:00:00:00:00"

        ;Now that we have a user name, check all the PDC's and BDC's for this user
        for bb=1 to servercount
            ;Get a server name
            ServerX=ItemExtract(bb,ServerList,@tab)
            ;Get users last logon time from that server
            llog=WntUserGetDat(ServerX,User,"last_logon")
            ;Get users full name from that server
            nam=WntUserGetDat(ServerX,User,"full_name")

            ;If last logon time is newer than previous saved time
            ; (or initialized value) capture latest time
            if llog > newestlastlogon
               newestlastlogon=llog
            endif
        next

        ;Now the we checked all the servers for this user...
        ;Decide if we want to write any information

        ;Set write flag initially to false
        dowrite=@false

        if savelastlogon=="0000:00:00:00:00:00"
           ; user never logged in.  Set write flag to true
           dowrite=@TRUE
        else
           ; or if last logon older than some time in the past...
           ; set the write flag to true then also
           if TimeDiffDays(time,newestlastlogon) > inp
              dowrite=@TRUE
           endif
        endif

        ;If the write flag was set to true...write out a long
        if dowrite==@TRUE
                inf = strcat('"',user,'" "',nam,'" "',llog,'"')            
                filewrite(fil,inf) 
        endif


    next
    ;Close da file
    Fileclose(fil) 
    
    message("Check Users Last Logon","The report is finnished!)
endif  ; end of NT section
exit

Article ID:   W14878
File Created: 2001:11:08:12:40:48
Last Updated: 2001:11:08:12:40:48