A computers AD object has a LastLogon time stamp, which gives you a useful indicator of a computer current state.
If you are able to install thrid party cmdlets then the Quest Active Directory cmdlets are incredibly helpful.
$result = @()
$OU = "DC=ncp,DC=co,DC=uk"
Foreach($computer in (Get-QADComputer -SearchRoot "$ou" -sizelimit 0))
{
$result += "$((Get-QADComputer $computer -IncludeAllProperties).lastLogon), $computer"
}
$result will list all your computers in the specified OU and their last logon date like this :
06/10/2013 08:48:25, NATTHN21$
05/13/2011 14:54:04, NATTHN02$
06/10/2013 08:42:51, NATRHN01$
06/10/2013 08:45:38, NCPHON01$
You would need to run this against all DC's that this computer may logon against. An organisation your size this is probably impractical.
As an alternate measure. The object property 'whenChanged' on your Computer AD objects is the Machine Account Password. This automatically updates after 30 days (default in Win 2K and later, usually. Checking the default domain group policy object can confirm this).
If you find computer accounts where 'whenChanged' is older than 30 days then these are machines that have not logged on in this period. This works well for larger multi DC networks as this figure is replicated where 'lastLogon' is not.
Simply amend the line in the script above to remove '.lastLogon' and replace it with '.whenChanged'
If you can't get Quest AD installed you will need to use a machine with RSAT installed (or a DC) and use the Get-ADComputer cmdlet (type 'Import-Module ActiveDirectory').
A third option for tracking future use would be to use a logon script. I did this at a clients a few years back and it worked well, although we were on a couple of hundered machines, not ~70K.
At the time our logon script was a .BAT file. Create a new .BAT in NETLOGON with the following line (eg LogonTrack.BAT)
::LogonTrack.BAT
ECHO %date% >Z:\%computername%
and at the end of any of the logon batch file that may be used by your 70K users add a line
call LogonTrack.BAT
This creates a file with the name of the computer, and the file date is the last logon in the mapped location.
I wouldn't recommend this but you could audit eventlogs for this information, although I generally avoid log diving where possible. You would need Event 4624.
Finally, I also use LANSweeper at a clients which is great. That has great reporting on old computers. However as a paid product requiring a separate install and a server so may not be any good for you. Plus for 250K systems you'd need a fairly powerful backend, not a repurposed VM that was lying around.