Um objeto AD de computadores possui um carimbo de hora LastLogon, que fornece um indicador útil do estado atual do computador.
Se você conseguir instalar cmdlets do thrid party, os cmdlets Quest Active Directory serão incrivelmente úteis.
$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 listará todos os seus computadores na unidade organizacional especificada e sua data de último logon como esta:
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$
Você precisaria executar isso contra todos os DCs com os quais esse computador pode fazer logon. Uma organização do seu tamanho é provavelmente impraticável.
Como medida alternativa. A propriedade do objeto 'whenChanged' em seus objetos AD do computador é a senha da conta da máquina. Isso atualiza automaticamente após 30 dias (padrão no Win 2K e posterior, normalmente. A verificação do objeto de diretiva de grupo de domínio padrão pode confirmar isso).
Se você encontrar contas de computador em que "whenChanged" tenha mais de 30 dias, essas são as máquinas que não efetuaram login nesse período. Isso funciona bem para redes DC múltiplas maiores, já que essa figura é replicada onde 'lastLogon' não é.
Simplesmente altere a linha no script acima para remover '.lastLogon' e substitua por '.whenChanged'
Se você não conseguir instalar o Quest AD, precisará usar uma máquina com RSAT instalado (ou DC) e usar o cmdlet Get-ADComputer (digite 'Import-Module ActiveDirectory').
Uma terceira opção para rastrear o uso futuro seria usar um script de logon. Eu fiz isso em um cliente há alguns anos e funcionou bem, embora estivéssemos em algumas máquinas caçadas, não ~ 70K.
Na época, nosso script de logon era um arquivo .BAT. Crie um novo .BAT em NETLOGON com a seguinte linha (por exemplo, LogonTrack.BAT)
::LogonTrack.BAT
ECHO %date% >Z:\%computername%
e no final de qualquer arquivo de lote de logon que possa ser usado por seus usuários de 70K, adicione uma linha
call LogonTrack.BAT
Isso cria um arquivo com o nome do computador e a data do arquivo é o último logon no local mapeado.
Eu não recomendaria isso, mas você poderia auditar logs de eventos para obter essas informações, embora eu geralmente evite o log diving quando possível. Você precisaria Evento 4624 .
Finalmente, eu também uso LANSweeper em um cliente que é ótimo. Isso tem ótimos relatórios em computadores antigos. No entanto, como um produto pago que requer uma instalação separada e um servidor, isso pode não ser bom para você. Além disso, para sistemas de 250K, você precisaria de um back-end razoavelmente poderoso, e não de uma VM adaptada que estivesse por aí.