Como localizar contas de computador que não são mais necessárias no AD

4

Eu sou novo nesta posição e acho que é uma estrutura AD que precisa de uma limpeza séria. Existem mais do que o dobro de contas de computador do que os funcionários, nem mesmo levando em conta os servidores. Gostaria de saber quais deles ainda são válidos e quais podem ser excluídos sem repercussão.

Eu encontrei a ferramenta do Joeware, OldComp, ela parece muito útil, mas eu acho que estou precisando de um pouco mais de compreensão do que ela está olhando ... quando ela procura por computadores com mais de 90 dias, isso significa faz 90 dias desde que foi conectado à rede? A razão por trás disso é que eu não quero inadvertidamente separar um laptop de um escritório de campo que pode estar em uma prateleira como um backup, pensando que é um computador "antigo" quando na verdade ele não está conectado e sendo usado atualmente. Talvez não valha a pena se preocupar com a rara chance de acontecer ...

De qualquer forma, se alguém souber de alguma outra maneira ou tiver um bom exemplo de como melhor realizar isso, eu apreciaria alguma percepção. O resultado final é que eu gostaria de poder me livrar de contas de computador que não estão mais sendo usadas. Obrigado.

    
por JasonM 16.05.2014 / 17:22

3 respostas

4

Oldcmp é bem conhecido pelo que faz e vai funcionar bem pela primeira vez e limpeza ocasional.
Se, ao longo do tempo, você quiser um processo automatizado, você pode usar o Powershell (altamente recomendado) para escrever um processo automatizado para isso. Por exemplo, nosso script atual faz o seguinte:

  • Localiza contas antigas com base em lastLogonTimeStamp usando get-ADcomputer
  • os desativa depois de 60 dias
  • os exclui após 90 dias
  • Registra tudo o que faz

Além disso, usamos o sinalizador ProtectFromAccidentialDeletion na conta, se não quisermos excluí-lo.

    
por 16.05.2014 / 18:12
2

Não existe nenhum método que seja capaz de distinguir entre uma máquina que não existe mais e que não esteja mais sendo usada em uma prateleira. Use OldComp para fazer a limpeza e lidar com a -offs se e quando surgirem.

    
por 16.05.2014 / 18:09
1

Por que não o PowerShell?

    $Computers =  ([ADSISearcher]"(&(objectCategory=computer)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))").FindAll()
    $Computers = $Computers | ForEach { $_.Path }
    $Age = $(Get-Date).AddDays(-90)

    $StaleComputerAccounts = @()
    $NeverUsedComputerAccounts = @()


    ForEach ($Computer in $Computers) {

        $ComputerObj = [ADSI]$Computer


        if ($ComputerObj.lastLogon) {

            $LastLogon = [DateTime]::FromFileTime($ComputerObj.ConvertLargeIntegerToInt64($ComputerObj.lastlogon[0]))
            if ( $LastLogon -lt $Age ) {

                $StaleComputerAccounts += $Computer

            }

        }
        else {

            $NeverUsedComputerAccounts += $Computer

        } 

}


Você deve ter uma lista de $StaleComputerAccounts e $NeverUsedComputerAccounts , que pode ser manipulada com mais PowerShell. Eu gosto de fazer algo assim:

$TargetOU = "OU=Computers,OU=Disabled,OU=,DC=CONTOSO,DC=com"
$OUObj = [ADSI]"LDAP://$TargetOU"


ForEach ($Computer in $StaleComputerAccounts) {

    $ComputerObj = [ADSI]$Computer
    $ComputerObj.PSBase.MoveTo($OUObj)
    $ComputerObj.InvokeSet("accountDisabled", $True)
    $ComputerObj.SetInfo()

}



Não existe uma maneira mágica de distinguir programaticamente entre um computador que tenha sido descomissionado incorretamente (ninguém o removeu do Active Directory quando estava fora de linha) e um laptop na mesa de algum executivo. Se você quiser mover com cuidado, basta desabilitar a conta e enviá-la para uma UO específica, como eu faço.

    
por 16.05.2014 / 20:45