Лучший отвечающий
Вывести список неактивных пользователей и ПК в одном сайте AD

Вопрос
-
Доброго времени суток, форумчане! Требуется вывести список нелогонившихся X Х дней пользователей и ПК определенной OU .
Нашел вот такие скрипты http://gallery.technet.microsoft.com/ScriptCenter/ru-ru/83d39949-3e22-45ef-aaba-3a4e17341c5e и http://gallery.technet.microsoft.com/ScriptCenter/ru-ru/6b8163d1-5fae-43b5-a664-a2d1f6e1e2da . Но есть проблема при их работе. С запросом они обращаются к эмулятору PDC , который находится в другом сайте AD , и на нем эти ПК и пользователи не логонятся. Соответственно, скрипты возвращают полный список пользователей и ПК.
Как можно доработать скрипты, чтобы они обращались к заранее известным контроллерам домена?
27 января 2010 г. 5:48
Ответы
-
Атрибут LastLogon является нереплицируемым атрибутом. Если вы хотите использовать этот атрибут в скрипте, то вам надо опрашивать каждый из имеющихся DC, иначе рискуете что-то пропустить.
Вместо этого атрибута можно использовать другой: lastLogonTimestamp. Этот атрибут реплицируется, но не чаще чем раз в две недели. Поэтому если вы используете этот атрибут, то погрешность вашего скрипта будет больше, но зато вы можете обращаться к любому DC.
Я делал так:#################################################### # FindOldUsers ShS 20090430 # # Поиск неиспользуемых учетных записей пользователей в домене #################################################### cls # Зададим количество дней, прошедших с последнего логона $LastLogon = (get-date).AddDays(-60).ToFileTime() # #Определим LDAP-фильтр для запроса $Filter = "(&(objectCategory=person)(objectcategory=user)(|(lastLogonTimestamp<=$LastLogon)(!(lastLogonTimestamp=*))))" #Выполним запрос Get-QADUser -ldapFilter $Filter -IncludedProperties lastLogonTimestamp | Select Name, dn, lastLogonTimestamp, AccountIsDisabled |?{-not $_.AccountIsDisabled} |Sort-Object Name |ft -AutoSize
- Помечено в качестве ответа vna345 28 января 2010 г. 7:20
27 января 2010 г. 12:03 -
Для поиска старых компьютеров можно использовать аналогичный скрипт:
#################################################### # FindOldComps.ps1 ShS 20090430 # # Поиск неиспользуемых учетных записей компьютеров в домене #################################################### cls # Зададим количество дней, прошедших с последнего логона $LastLogon = (get-date).AddDays(-60).ToFileTime() # #Определим LDAP-фильтр для запроса $Filter = "(&(objectcategory=computer)(|(lastLogonTimestamp<=$LastLogon)(!(lastLogonTimestamp=*))))" #Выполним запрос, отберем только учетки, у которых Get-QADComputer -ldapFilter $Filter -IncludedProperties pwdLastSet, useraccountcontrol | Select Name, pwdLastSet, Description, @{Name="Disabled"; Exp={$_.useraccountcontrol -band 2}}, dn |?{$_.Disabled -eq 0} |Sort-Object pwdLastSet |ft -AutoSize
Отследить, как давно компьютер не выполнял логон, можно так же, проверив, как давно он не менял свой пароль (атрибут pwdLastSet). поэтому я решил его вывести в результаты работы скрипта.- Помечено в качестве ответа vna345 28 января 2010 г. 7:20
27 января 2010 г. 13:07 -
Можно использовать оснастку ADUC для получения списка "старых" учеток.
Создаете новый запрос и там на первой же вкладке внизу "Days since last logon"....
Полученный список можно экспортировать.... :-)
Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/- Помечено в качестве ответа vna345 28 января 2010 г. 7:20
27 января 2010 г. 14:20Модератор
Все ответы
-
Атрибут LastLogon является нереплицируемым атрибутом. Если вы хотите использовать этот атрибут в скрипте, то вам надо опрашивать каждый из имеющихся DC, иначе рискуете что-то пропустить.
Вместо этого атрибута можно использовать другой: lastLogonTimestamp. Этот атрибут реплицируется, но не чаще чем раз в две недели. Поэтому если вы используете этот атрибут, то погрешность вашего скрипта будет больше, но зато вы можете обращаться к любому DC.
Я делал так:#################################################### # FindOldUsers ShS 20090430 # # Поиск неиспользуемых учетных записей пользователей в домене #################################################### cls # Зададим количество дней, прошедших с последнего логона $LastLogon = (get-date).AddDays(-60).ToFileTime() # #Определим LDAP-фильтр для запроса $Filter = "(&(objectCategory=person)(objectcategory=user)(|(lastLogonTimestamp<=$LastLogon)(!(lastLogonTimestamp=*))))" #Выполним запрос Get-QADUser -ldapFilter $Filter -IncludedProperties lastLogonTimestamp | Select Name, dn, lastLogonTimestamp, AccountIsDisabled |?{-not $_.AccountIsDisabled} |Sort-Object Name |ft -AutoSize
- Помечено в качестве ответа vna345 28 января 2010 г. 7:20
27 января 2010 г. 12:03 -
да, чуть не забыл, вам, придется немного модифицировать скрипт, добавив к командлету Get-QADUser параметр -SearchRoot и указав нужное OU27 января 2010 г. 12:18
-
Для поиска старых компьютеров можно использовать аналогичный скрипт:
#################################################### # FindOldComps.ps1 ShS 20090430 # # Поиск неиспользуемых учетных записей компьютеров в домене #################################################### cls # Зададим количество дней, прошедших с последнего логона $LastLogon = (get-date).AddDays(-60).ToFileTime() # #Определим LDAP-фильтр для запроса $Filter = "(&(objectcategory=computer)(|(lastLogonTimestamp<=$LastLogon)(!(lastLogonTimestamp=*))))" #Выполним запрос, отберем только учетки, у которых Get-QADComputer -ldapFilter $Filter -IncludedProperties pwdLastSet, useraccountcontrol | Select Name, pwdLastSet, Description, @{Name="Disabled"; Exp={$_.useraccountcontrol -band 2}}, dn |?{$_.Disabled -eq 0} |Sort-Object pwdLastSet |ft -AutoSize
Отследить, как давно компьютер не выполнял логон, можно так же, проверив, как давно он не менял свой пароль (атрибут pwdLastSet). поэтому я решил его вывести в результаты работы скрипта.- Помечено в качестве ответа vna345 28 января 2010 г. 7:20
27 января 2010 г. 13:07 -
Можно использовать оснастку ADUC для получения списка "старых" учеток.
Создаете новый запрос и там на первой же вкладке внизу "Days since last logon"....
Полученный список можно экспортировать.... :-)
Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/- Помечено в качестве ответа vna345 28 января 2010 г. 7:20
27 января 2010 г. 14:20Модератор -
Можно использовать оснастку ADUC для получения списка "старых" учеток.
Создаете новый запрос и там на первой же вкладке внизу "Days since last logon"....
Полученный список можно экспортировать.... :-)
Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
Век живи - век учись. Спасибо Илья. Даже не подозревал о существовании такой возможности.
А какой атрибут использует ADUC для получения старых учеток? (в справке не нашел, но есть подозрение, что lastLogonTimestamp)27 января 2010 г. 14:32 -
Спасибо за помощь!28 января 2010 г. 7:20