Перейти к основному содержанию

Узнать кто был на сервере за сутки

PowerShell

Понадобилось мне посчитать, сколько уникальных пользователей и кто именно заходил на терминальный сервер за сутки.

Узнать кто заходил на сервер никогда не будет лишним. К примеру, нужно вычислить админа, который накосячил, если он не признаётся. А количество пользователей может быть полезно, если вы, к примеру, хотите узнать какое количество пользователей тянет ваш терминальный сервер.

Пример скрипта, который решает нашу задачу:

$StartTime = (Get-Date).AddHours(-24)
$Events = Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" | 
          Where-Object { $_.TimeCreated -ge $StartTime -and ($_.Id -eq 21 -or $_.Id -eq 23 -or $_.Id -eq 24) }
$UniqueUsers = $Events | ForEach-Object { $_.Properties[0].Value } | Sort-Object -Unique

# Вывод каждого пользователя на новой строке
$UniqueUsers | ForEach-Object {
    Write-Host $_
}

# Вывод общего количества
Write-Host "`nОбщее количество уникальных пользователей: $($UniqueUsers.Count)"

Скрипт смотрит журнал событий Applications and Services Logs → Microsoft → Windows → TerminalServices-LocalSessionManager → Operational и фильтрует следующие события:

  • Event ID 21 – Успешный вход пользователя.
  • Event ID 23 – Выход пользователя.
  • Event ID 24 – Переподключение сессии.

Текущие сессии можно посмотреть командой:

query session /server:SERVERNAME

Теги

 

Похожие материалы

Запуск PowerShell скрипта в Планировщике заданий

Системному администратору часто приходится писать разные скрипты и настраивать их запуск по расписанию в Планировщике заданий (Task Scheduler). Простой пример ниже.

Теги