dsquery computer -inactive x
usa o atributo LastLogonTimeStamp para decidir se um computador está inativo ou não. Duas das idiossincrasias do LastLogonTimeStamp são:
1) é muito solto, ou seja, nem de longe em tempo real. Esse atributo não é atualizado sempre que um computador faz logon no domínio e, mesmo quando é atualizado, nem sempre é replicado para outros controladores de domínio imediatamente.
2) Pode ser nulo, caso em que dsquery provavelmente irá ignorá-lo.
A opção -stalepwd
também pode ser útil para identificar contas de computador inativas. As contas de computador devem estar atualizando automaticamente suas senhas a cada 30 dias. Mas cuidado, ele usa o atributo LDAP pwdLastSet, que também pode ser nulo. O pwdLastSet vem como um tempo de arquivo chato, mas o .Net / Powershell converte-o facilmente para uma data amigável:
PS C:\Users\ryan> Get-ADComputer -Filter * -Properties PasswordLastSet,LastLogonTimeStamp | ? { $_.PasswordLastSet -LT $(Get-Date).AddDays(-180) } | Select Name,PasswordLastSet,LastLogonTimeStamp | Sort-Object PasswordLastSet -Descending
A linha de Powershell acima dará a você todas as contas de computador cujo atributo pwdLastSet (Powershell converte isso em PasswordLastSet legível por humanos) tem mais de 180 dias, as contas mais recentes estarão no topo. As contas mais antigas e aquelas com pwdLastSets nulo ficarão na parte inferior.
(Claro que você pode desabilitar as alterações de senha em um computador, mas isso é algo relativamente raro de se fazer.)
Essas contas que possuem valores nulos geralmente significam que elas nunca efetuaram logon no domínio e / ou nunca alteraram sua senha. Tenho certeza de que pode haver outros casos de uso estranhos em que isso possa acontecer, como um administrador inserindo uma conta de computador, mas decidindo nunca ingressar na máquina no domínio, contas de computador de outros domínios filhos da mesma floresta, etc. Você só precisa investigar isso.
Aqui estão mais algumas informações sobre LastLogonTimeStamp de AskDS se você quiser lê-lo: