
Понадобилось мне посчитать, сколько уникальных пользователей и кто именно заходил на терминальный сервер за сутки.
Узнать кто заходил на сервер никогда не будет лишним. К примеру, нужно вычислить админа, который накосячил, если он не признаётся. А количество пользователей может быть полезно, если вы, к примеру, хотите узнать какое количество пользователей тянет ваш терминальный сервер.
Пример скрипта, который решает нашу задачу:
$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