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

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

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

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

3 ответа

Решение

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

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

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

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

Почему не 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, когда он был отключен), и ноутбук, сидящий за столом какого-то руководителя. Если вы хотите двигаться осторожно, вы можете просто отключить учетную запись и отправить ее в определенную OU, как я.

Другие вопросы по тегам