none
Вывести список неактивных пользователей и ПК в одном сайте AD RRS feed

Ответы

  • Атрибут 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 и указав нужное OU
    27 января 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