Faxina no AD – Encontre e remova contas de computador obsoletas

Fala galera, 100%?!

Eu trabalho com Active Directory a algum tempo, e você? Esse carinha é tão estável, que vez ou outra agente esquece de dar manutenção nele, concorda?

Volta e meia é precisa ingressar um novo pc no domínio ou trocar uma substituir uma estação de trabalho, e por ai vai. São “n” situação que fazem com que nosso AD acabe acumulando objetos obsoletos (nome bonito pra lixo). Vejo isso acontecendo com mais frequência com contas de computador, pois acaba que os procedimento que cite antes são realizados e na correria do dia-a-dia não nos damos conta que existem 30 contas de computador no AD, e apenas 15 no parque de trabalho (exemplo).

Um lance que gosto de deixar claro é que, 10 contas de computador a mais ou 10 a menos não afeta em nada nosso ambiente, mas, assim como você eu sou muito chato para questões de organização e padronização.

Hoje, seguindo nossa exploração do mundo do AD, darei uma dica para faxinar seu AD, sem levantar da cadeira. Curtiu? Se cadastra no site ai pra ficar por dentro das demais dicas que deixarei pra você.

Vamos lá! Com a ajuda de um script PowerShell que encontrei no Technet listaremos to
das as contas e computador que não se autenticam no Domínio a mais de 120 dias.

– Nathan, eu sou hardcore e quero listar as contas que não se autenticam a apenas 15 dias, tem como?! Craru crovis! Basta alterar isso no script, na variável $DaysInactive. O script esta logo abaixo.

import-module activedirectory
$domain = “meudominio.local”
$DaysInactive = 120
$time = (Get-Date).Adddays(-($DaysInactive))

# Get all AD computers with lastLogonTimestamp less than our time
Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} -Properties LastLogonTimeStamp |

# Output hostname and lastLogonTimestamp into CSV
select-object Name,@{Name=”Stamp”; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} | export-csv c:\PcsObsoletos.csv –notypeinformation

Veja que existem variáveis na primeira linha. Você deve alterar duas apenas:

$Domain: Aqui você digita seu domínio

$DaysInactive: Aqui você digita a quantidade de dias de inatividade de um pc

Depois que executar esse script, ele vai salvar o resultado em “C:\PcsObsoletos.csv. Esse arquivo listará o nome e a data da última autenticação da maquina, por exemplo:

“NP-ADM-01”,”04-31-15”

“NP-ADM-03”,”04-31-15”

“NP-ADM-02”,”04-31-15”

Como é um csv, você pode importar em um Excel e manter para questões de auditoria. A lista já te norteia em relação ao que remover. Mas e ai, terei de fazer isso na unha? Um a um!? No way brow!! Vamos usar um segundo script para ler um arquivo .csv e remover os computadores nele listado.

Abra o arquivo que foi gerado no script anterior e copie o nome dos computadores apenas. Crie um outro arquivo csv no C: chamado “RemovePC.csv”. Na primeira linha desse arquivo digite “name”, por exemplo:

Name

NP-ADM-01

NP-ADM-02

NP-ADM-03

Um detalhe importante aqui é ter certeza de que deseja apagar a conta, se não tiver certeza, não faça, ou terá dor de cabeça!

Execute o script abaixo:

Import-Csv “C:\RemovePC.csv” | ForEach-Object {
Remove-ADComputer -Identity $_.name -confirm:$false
}

Pronto! Contas de computador deletadas!

Se tu puder deixar um feedback ai nos comentário sobre o que tem achado do conteúdo do site, seria show de bola!

Grande abraço!

Referencia:  http://ift.tt/2cdXe60

9 comentários a "Faxina no AD – Encontre e remova contas de computador obsoletas"

  1. Muito bom! Tem um script assim para usuário do AD?Abs

  2. Galera,
    Vocês sabem algum para a remoção de maquina do dominio?
    Preciso muito.

  3. Nathan, bom dia.
    muito bom o comando executei, mas na hora de deletar ele me da access is deneid em todo lote.

    Qual comando eu posso executar para remover o deneid de toda lista localizada ?

    desde já grato.

    • Olá Gilson!
      Nesse caso tente rodar o delete com o powershell em modo privilegiado (como administrador). Caso mesmo assim não de certo, você precisa verificar as permissões do seu usuário.

  4. Gostaria de fazer o seguinte:
    1 – Pegar o hostname das máquinas que não são “logadas” a 90 dias. Isso está no seu script
    2 – Pegar essas maquinas e ver quem fez o ultimo logon delas.

    Tem um script para isso?

    • Olá Junior, como vai?
      Como o resultado do primeiro script você consegue criar um buscando o LastLogonTime

      get-adcomputer -Identity | select SamAccountName,lastLogontimeStamp

      Abraço

  5. Boa tarde, ao executar o comando o powershell mostra esse erro:
    Remove-ADComputer:
    Line |
    2 | Remove-ADComputer -Identity $_.name -confirm:$false
    | ~~~~~~~
    | Cannot validate argument on parameter ‘Identity’. The argument is null. Provide a valid value for the argument, and then try running the command again.

    Poderia me ajudar por favor ?

Comentar

O seu endereço de email não será publicado.


*


Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.