Для системного администратора или специалиста по безопасности часто возникает вопрос: «А кто и когда последний раз работал за этим компьютером?». Ответ на него помогает в расследованиях, при поиске неактивных учетных записей или просто для аудита. Вместо того чтобы копаться в громоздких журналах событий, можно использовать элегантный однострочный скрипт 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.
- Находим папки пользователей (
Get-ChildItem) Сначала мы получаем список всех папок вC:\Users. Ключ-Forceнужен, чтобы увидеть даже скрытые системные файлы, что понадобится нам на следующем шаге. - Отсеиваем лишнее (
Where-Object) ВC:\Usersесть системные профили вроде «Public» (Общие) и «Default» (По умолчанию). Они нам не нужны, поэтому мы их отфильтровываем. - Извлекаем данные (
Select-ObjectиNTUSER.DAT) Это сердце нашего скрипта. Для каждой папки пользователя мы:- Создаем колонку «Пользователь», беря имя папки.
- Создаем колонку «Конец последнего сеанса», где и происходит магия. Мы находим в папке пользователя файл NTUSER.DAT.
- Сортируем и форматируем (
Sort-ObjectиFormat-Table) В конце мы сортируем результаты по дате, чтобы самые недавние записи были наверху, и выводим всё в виде красивой и ровной таблицы.
Практическое применение
- Аудит безопасности: Быстро проверить, не было ли входа под учетными записями в нерабочее время.
- «Чистка» системы: Найти профили пользователей, которые не заходили в систему уже много месяцев, и принять решение об их архивации или удалении.
- Инвентаризация: Определить, какие учетные записи на общем компьютере или сервере все еще активно используются.
Этот скрипт — идеальный пример того, как PowerShell помогает решать реальные задачи администратора быстро и эффективно.
🚀 Хотите стать архитектором будущего, а не просто админом? Эта статья — лишь верхушка айсберга. В нашем Telegram-канале «Admin Future» мы каждый день публикуем системные гайды, готовые скрипты, AI-лайфхаки и чеклисты, которые не найти в Google. Мы не просто постим команды — мы строим библиотеку знаний для тех, кто хочет расти от админа до архитектора. Подписывайтесь и становитесь экспертом: Admin Future