Кто и когда последний раз заходил на компьютер? Отвечает PowerShell

Для системного администратора или специалиста по безопасности часто возникает вопрос: «А кто и когда последний раз работал за этим компьютером?». Ответ на него помогает в расследованиях, при поиске неактивных учетных записей или просто для аудита. Вместо того чтобы копаться в громоздких журналах событий, можно использовать элегантный однострочный скрипт PowerShell, который даст быстрый и точный ответ.

Сегодня мы разберем именно такой скрипт. Его секрет — в обращении к одному специальному файлу, который есть в профиле каждого пользователя.

Сам скрипт

Этот скрипт просканирует папку C:\Users, найдет всех реальных пользователей и покажет, когда их сеанс был активен в последний раз. Просто скопируйте его в консоль PowerShell.

PowerShell

Get-ChildItem -Path C:\Users -Force -Directory | 
    Where-Object { $_.Name -notin "Public", "Default", "Default User" } | 
    Select-Object @{Name="Пользователь"; Expression={$_.Name}}, @{Name="Конец последнего сеанса"; Expression={(Get-Item "$($_.FullName)\NTUSER.DAT" -Force -ErrorAction SilentlyContinue).LastWriteTime}} | 
    Sort-Object "Конец последнего сеанса" -Descending | 
    Format-Table -AutoSize

Пример вывода будет выглядеть так:

Пользователь   Конец последнего сеанса
------------   -----------------------
admin          07.10.2025 08:30:11
d.ivanov       06.10.2025 18:15:45
a.petrov       01.09.2025 12:00:22

Как видите, самые «свежие» пользователи находятся наверху списка.

Как это работает? Секретный ингредиент — NTUSER.DAT

Этот скрипт работает как конвейер, где результат одной команды передается на вход следующей. Но главная «фишка» — это проверка файла NTUSER.DAT.

  1. Находим папки пользователей (Get-ChildItem) Сначала мы получаем список всех папок в C:\Users. Ключ -Force нужен, чтобы увидеть даже скрытые системные файлы, что понадобится нам на следующем шаге.
  2. Отсеиваем лишнее (Where-Object) В C:\Users есть системные профили вроде «Public» (Общие) и «Default» (По умолчанию). Они нам не нужны, поэтому мы их отфильтровываем.
  3. Извлекаем данные (Select-Object и NTUSER.DAT) Это сердце нашего скрипта. Для каждой папки пользователя мы:
    • Создаем колонку «Пользователь», беря имя папки.
    • Создаем колонку «Конец последнего сеанса», где и происходит магия. Мы находим в папке пользователя файл NTUSER.DAT.
    Что такое NTUSER.DAT? Это скрытый системный файл, который является личной «веткой реестра» пользователя. В нём хранятся все его настройки: от обоев рабочего стола до параметров программ. Windows обновляет этот файл, когда пользователь выходит из системы или перезагружает ПК. Дата последнего изменения этого файла — самый надежный и быстрый способ узнать, когда закончился последний сеанс работы этого пользователя.
  4. Сортируем и форматируем (Sort-Object и Format-Table) В конце мы сортируем результаты по дате, чтобы самые недавние записи были наверху, и выводим всё в виде красивой и ровной таблицы.

Практическое применение

  • Аудит безопасности: Быстро проверить, не было ли входа под учетными записями в нерабочее время.
  • «Чистка» системы: Найти профили пользователей, которые не заходили в систему уже много месяцев, и принять решение об их архивации или удалении.
  • Инвентаризация: Определить, какие учетные записи на общем компьютере или сервере все еще активно используются.

Этот скрипт — идеальный пример того, как PowerShell помогает решать реальные задачи администратора быстро и эффективно.

🚀 Хотите стать архитектором будущего, а не просто админом? Эта статья — лишь верхушка айсберга. В нашем Telegram-канале «Admin Future» мы каждый день публикуем системные гайды, готовые скрипты, AI-лайфхаки и чеклисты, которые не найти в Google. Мы не просто постим команды — мы строим библиотеку знаний для тех, кто хочет расти от админа до архитектора. Подписывайтесь и становитесь экспертом: Admin Future

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх