Как найти учетные записи компьютеров, которые больше не нужны в AD

Как найти учетные записи компьютеров, которые больше не нужны в AD

Я новичок на этой должности и считаю, что структура AD нуждается в серьезной чистке. Количество учетных записей компьютеров вдвое превышает количество сотрудников, даже не принимая во внимание серверы. Я хотел бы знать, какие из них еще действительны, а какие можно удалить без последствий.

Я нашел инструмент от Joeware, OldComp, он выглядит довольно удобным, но, полагаю, мне просто нужно немного больше понять, что он ищет... когда он ищет компьютеры старше 90 дней, означает ли это, что прошло 90 дней с тех пор, как он был подключен к сети? Причина этого в том, что я не хочу непреднамеренно отключить ноутбук из полевого офиса, который может лежать на полке в качестве резервного, думая, что это "старый" компьютер, когда на самом деле он просто не подключен и используется в настоящее время. Может быть, не стоит беспокоиться из-за редкой возможности, которая может произойти...

В любом случае, если кто-то знает другой способ или имеет хороший пример того, как лучше всего это сделать, я был бы признателен за некоторые соображения. Конечный результат заключается в том, что я просто хотел бы избавиться от учетных записей компьютеров, которые больше не используются. Спасибо.

решение1

Oldcmpхорошо известен тем, что он делает, и будет хорошо работать для первой и случайной очистки.
Если со временем вам понадобится автоматизированный процесс, вы можете использовать Powershell (настоятельно рекомендуется), чтобы написать автоматизированный процесс для этого. Например, наш текущий скрипт делает следующее:

  • Находит старые учетные записи на основе lastLogonTimeStampиспользованияget-ADcomputer
  • отключает их через 60 дней
  • удаляет их через 90 дней
  • Регистрирует все, что делает

Кроме того, мы используем флаг ProtectFromAccidentialDeletion для учетной записи, если не хотим, чтобы она была удалена.

решение2

Не существует метода, который бы позволил отличить машину, которая ушла и больше не существует, от той, которая стоит на полке без дела, поэтому используйте OldComp для уборки и устранения неисправностей, если они возникнут.

решение3

Почему не 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

        } 

}


У вас должен получиться список $StaleComputerAccountsи $NeverUsedComputerAccountsкоторый вы затем можете манипулировать с помощью PowerShell. Мне нравится делать что-то вроде этого:

$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()

}



Не существует волшебного способа программно отличить компьютер, который был неправильно выведен из эксплуатации (никто не удалил его из Active Directory, когда он был отключен), от ноутбука, стоящего на столе у ​​какого-то руководителя. Если вы хотите действовать осторожно, вы можете просто отключить учетную запись и отправить ее в определенное подразделение, как это делаю я.

Связанный контент