.
Узнать, с какими учетными записями не выполнялся вход в систему, скажем, последние 90 дней, можно с помощью следующей команды:
search-adaccount -usersonly -accountinactive -timespan «90"
Заметим, что значение параметра -timespan следует заключать в двойные кавычки («90»). В противном случае этот параметр не будет работать должным образом. Сообщений об ошибке также не будет, что создаст необходимость более углубленной диагностики, а для большинства из нас это нежелательно.
Еще один способ определить неактивных пользователей — указать команде search-adaccount конкретную дату с помощью параметра -datetime. Например, чтобы выявить пользователей, не регистрировавшихся в системе с 1 декабря 2011 года, можно построить следующий запрос:
search-adaccount -usersonly -accountinactive -datetime "1 December 2011"
Снова отметим, что значение параметра -datetime должно быть заключено в двойные кавычки. Как уже говорилось в предыдущей статье, в AD отсутствует флажок фактической неактивности учетной записи, поэтому команда search-adaccount судит об активности по значению атрибута lastlogondate.
Чтобы построить таблицу неактивных учетных записей, можно передать результат выполнения команды searchadaccount команде ft (форматировать в таблицу):
search-adaccount -usersonly -accountinactive -datetime "1 December 2011"|ft samaccountname, lastlogondate -auto
Если вы испытаете эту команду на рабочем домене Active Directory (AD), манипулируя различными датами и временными интервалами, то заметите нечто странное.
Например, логично было бы предположить, что команда search-adaccount с параметром -datetime «1 December 2011» позволит выявить пользователя, выполнившего последнюю регистрацию в системе 30 ноября 2011 года, поскольку эта дата наступает раньше 1 декабря 2011 года, однако этого не происходит. На деле команда возвращает учетные записи пользователей, у которых дата последней регистрации в системе, определяемая значением параметра lastlogondate, предшествует 15 ноября. Аналогично, в ответ на осуществляемый 30 декабря 2011 года запрос с параметром -timespan (временной интервал)
search-adaccount -usersonly -accountinactive -timespan "29"
разумно ожидать выдачи пользователей с последней датой регистрации в системе 1 декабря 2011 года (то есть за 29 дней до 30 декабря) и ранее, однако и это не выполняется. Вместо этого команда возвращает лишь тех, чье значение параметра lastlogondate указывает на дату 15 ноября и ранее. Создается впечатление, что в команду search-adaccount заложен 15-дневный период отсрочки. В чем тут дело? Я не общался с автором search-adaccount, но полагаю, что это связано с особенностью, присущей параметру lastlogondate.
Вспомним, что AD предусматривает обновление значений lastlogondate лишь один раз в 14 дней независимо от того, как часто осуществляется регистрация в системе за данный период. Это объясняется тем, что, поскольку каждое обновление значения параметра lastlogondate инициирует процесс репликации, есть опасение, что более частые обновления создадут излишнюю нагрузку на сеть. Поэтому значение параметра lastlogondate, указывающее на дату 25 ноября 2011 года, на самом деле не означает, что именно в этот день данный пользователь в последний раз регистрировался в системе. Можно лишь заключить, что последняя регистрация в системе этого пользователя могла произойти как 25 ноября, так и в любой момент до 9 декабря включительно (то есть спустя 14 дней после 25 ноября). Просто значение параметра lastlogondate не обновлялось, поскольку и не должно было обновляться. Поэтому было бы некорректно маркировать эту учетную запись как неактивную только из-за того, что значение параметра lastlogondate указывает на 25 ноября, так как в данной ситуации «25 ноября», по существу, означает «9 декабря». «Коэффициент удлинения» у lastlogondate составляет 14 дней, поэтому можно предположить, что автор search-adaccount добавил еще один день для ровного счета, и с этого момента команда search-adaccount имеет 15-дневный период отсрочки. Такое решение представляется оптимальным.
Это, однако, понравится далеко не всем. В частности, специалисты, отвечающие за соответствие правовым и нормативным требованиям, заинтересованы в том, чтобы списки неактивных пользователей отражали реальные значения параметра lastlogondate и чтобы в search-adaccount применялась некая строгая интерпретация значений lastlogondate. Для таких случаев существует простое решение. Если вы хотите, чтобы ваш список неактивных пользователей содержал значения параметра lastlogondate, близкие к реальным, то вычитайте 15 из значений параметра -timespan, а значения -datetime сдвигайте на 15 дней вперед. Вместо -timespan «90» указывайте -timespan «75», а -datetime «1 December 2011» замените на -datetime «16 December 2011».
Марк Минаси (www.minasi.com/gethelp) — старший редактор журнала Windows IT Pro, сертифицированный системный инженер по продуктам Microsoft