Есть ли способ программно собрать список пользователей, которые входили на сервер Windows (в частности, 2008 R2) в течение последних 30 дней или между двумя датами? Есть 2 сервера Active Directory, и все пользователи являются членами одного домена.
Моя конечная цель — автоматически получить список уникальных пользователей для каждого из наших серверов по причинам SPLA.
решение1
Это делается вручную, а не через программу, но вы можете создать фильтр в Event Viewer, который будет показывать только ваши события входа. Щелкните правой кнопкой мыши по папке Custom Views
и выберите Create Custom View
опцию. К сожалению, для этого фильтра вам придется редактировать XML. Вот как будет выглядеть XML для фильтра:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4624)]]
and
*[EventData[Data[@Name='LogonType'] and (Data='2' or Data='10' or Data='11')]]
</Select>
<Suppress Path="Security">
*[EventData[Data[@Name='TargetDomainName'] and (Data = 'Window Manager')]]
</Suppress>
</Query>
</QueryList>
Вы можете отредактировать это, включив также Logon Type 7 (Разблокировка заблокированного сеанса). Более подробную информацию о кодах Logon Type можно найти здесь:
http://www.windowsecurity.com/articles-tutorials/misc_network_security/Logon-Types.html
Обратите внимание, что это НЕ фильтрует по диапазону дат: только входы. Но как только вы сузите эту часть, будет легко просматривать диапазон дат в Event Viewer вручную.
К сожалению, этот фильтр у меня не сработал, когда я использовал опцию «Подключиться к другому компьютеру», даже при отключенном брандмауэре.
решение2
Легкого пути нет. Первое, что приходит на ум, — это просмотр журналов безопасности. Вы ищете событие с идентификатором 4624. Обратите внимание на тип входа (2,10,11, если вы хотите подсчитать интерактивные входы).
В зависимости от того, насколько быстро генерируются записи журнала безопасности и насколько велик ваш журнал, журнал может быть перезаписан до истечения 30-дневного цикла.
Лучше реализовать скрипт входа, который будет вести подсчет в централизованном месте.