To keep active directory clean of old computer accounts, I run a script on a monthly schedule that finds computers that haven’t sync’d passwords for their machine accounts in 120 days or so. It also does some other clever stuff like working out which user the system belonged to, and if they have a new system, then emails the output and action is taken appropriatly (I doubt many people want auto-deletions of system accounts!).
Someone pointed out to me that a very old system wasn’t getting picked up by the script, so I had to do some debugging…
Running Microsofts AD LDAP browser (adsiedit.msc) let me find the system in question, and looking at the properties of it there was a value for ‘pwdLastSet’, but it wasn’t in a standard date format. After a bit of research, it turns out that this is in the Integer8 format, this is a 64-bit / 8 byte number that stores the date/time in 100nanosecond intervals. Great. But when the hell was ‘128509137717192405’ ?!
Easy… You can convert a Integer8 date format by using the ‘w32tm’ command….
Z:\>w32tm /ntte 128509137717192405 148737 10:16:11.7192405 - 25/03/2008 11:16:11 (local time)
So that explains why the system wasn’t appearing in my old systems list, it had sync’d passwords only a couple of months ago.