“dsquery computer -inactive x” ignora computadores muito antigos obviamente inativos

4

Eu herdei um ambiente do AD que contém centenas de contas de computador há muito mortas. Eu quero começar a limpá-los. Se eu usar o comando dsquery computer -inactive , ele parece ignorar esses computadores e retornar apenas os computadores que estiveram ativos nos últimos meses / semanas, mas não ativos no período de tempo especificado.

Por exemplo, se eu executar dsquery computer -inactive 4 , obtenho um computador. Se eu correr dsquery computer -inactive 3 , recebo cerca de cinco. Se eu executar dsquery computer -inactive 1 , obtenho uma lista grande. Nenhuma dessas listas mostra as contas de computador muito antigas.

Estou entendendo errado o que esse comando deve fazer?

    
por MrVimes 09.08.2013 / 11:20

2 respostas

3

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:

link

    
por 09.08.2013 / 15:57
0

Primeiro, os computadores trocam suas senhas a cada 30 dias por padrão, embora isso possa ser alterado. Procurar computadores com menos de 30 dias como inativo é apenas pedir problemas, e não se esqueça dos usuários de VPN ou de outras pessoas que podem se conectar ao domínio apenas a cada 6 a 12 meses quando estiverem no escritório.

Dito isto, você pode precisar especificar o ou os computadores estão em, ou forestroot ou domainroot:

dsquery computer forestroot -inactive 4
dsquery computer domainroot -inactive 4
dsquery computer ou=Foo,dc=bar,dc=baz,dc=com -inactive 4

Minha preferência pessoal é um utilitário joeware gratuito "oldcmp":

oldcmp -age [days] -report

oldcmp também tem opções para deletar o que você quiser, então continue com cautela se você for dessa maneira.

    
por 09.08.2013 / 15:56