Назад | Перейти на главную страницу

«Dsquery computer -inactive x» игнорирует очень старые явно неактивные компьютеры

Я унаследовал среду AD, содержащую сотни давно мертвых учетных записей компьютеров. Я хочу начать их очищать. Если я использую dsquery computer -inactive Команда, похоже, игнорирует эти компьютеры и возвращает только те компьютеры, которые были активны в последние месяцы / недели, но не были активными в данный период времени.

Например, если я бегу dsquery computer -inactive 4 Я получаю один компьютер. Если я сбегу dsquery computer -inactive 3 Получаю около пяти. Если я сбегу dsquery computer -inactive 1 Получаю большой список. Ни в одном из этих списков нет очень старых учетных записей компьютеров.

Я неправильно понимаю, что эта команда должна делать?

dsquery computer -inactive x использует атрибут LastLogonTimeStamp, чтобы определить, неактивен компьютер или нет. Две особенности LastLogonTimeStamp заключаются в следующем:

1) это очень свободный, т.е. далеко не в реальном времени. Этот атрибут не обновляется каждый раз, когда компьютер входит в домен, и даже когда он обновляется, он не всегда сразу реплицируется на другие контроллеры домена.

2) Он может быть нулевым, и в этом случае dsquery, скорее всего, его проигнорирует.

В -stalepwd переключатель также может быть полезен для определения неактивных учетных записей компьютеров. Учетные записи компьютеров должен будут автоматически обновлять свои пароли каждые 30 дней. Но будьте осторожны, он использует атрибут LDAP pwdLastSet, который также может иметь значение NULL. pwdLastSet представляет собой раздражающее время файла, но .Net / Powershell легко конвертирует его в удобную для человека дату:

PS C:\Users\ryan> Get-ADComputer -Filter * -Properties PasswordLastSet,LastLogonTimeStamp | ? { $_.PasswordLastSet -LT $(Get-Date).AddDays(-180) } | Select Name,PasswordLastSet,LastLogonTimeStamp | Sort-Object PasswordLastSet -Descending

Строка Powershell выше предоставит вам все учетные записи компьютеров, для которых атрибут pwdLastSet (Powershell преобразует его в удобочитаемый PasswordLastSet) старше 180 дней, самые свежие учетные записи будут вверху. Самые старые учетные записи и учетные записи с нулевым значением pwdLastSets будут внизу.

(Конечно, вы можете отключить смену пароля на компьютере, но это относительно редко.)

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

Вот еще немного информации о LastLogonTimeStamp от AskDS, если вы хотите ее прочитать:

http://blogs.technet.com/b/askds/archive/2009/04/15/the-lastlogontimestamp-attribute-what-it-was-designed-for-and-how-it-works.aspx

Во-первых, по умолчанию компьютеры меняют свой пароль каждые 30 дней, хотя его можно изменить. Искать компьютеры, которые неактивны менее 30 дней, просто напрашивается на проблемы, и не забывайте о пользователях VPN или других лицах, которые могут подключаться к домену только каждые 6-12 месяцев, когда они находятся в офисе.

Тем не менее, вам может потребоваться указать ou, в котором находятся компьютеры, или корневой каталог, или корневой каталог домена:

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

Лично я предпочитаю бесплатную утилиту joeware "oldcmp":

oldcmp -age [days] -report

oldcmp также имеет параметры для удаления всего, что вы хотите, так что будьте осторожны, если вы пойдете по этому пути.