Как быстро понять, кто и когда логинился на сервер или важную машину? Особенно если есть подозрения на взлом или кто-то заходит в нерабочее время.
Данный PowerShell-скрипт покажет логи входа в систему (Event ID 4624) из журнала безопасности:
Get-WinEvent -FilterHashtable @{
LogName = 'Security';
Id = 4624;
StartTime = (Get-Date).AddDays(-1)
} | ForEach-Object {
$xml = [xml]$_.ToXml()
[PSCustomObject]@{
TimeCreated = $_.TimeCreated
AccountName = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "TargetUserName"} | Select-Object -ExpandProperty '#text'
IPAddress = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "IpAddress"} | Select-Object -ExpandProperty '#text'
LogonType = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "LogonType"} | Select-Object -ExpandProperty '#text'
}
} | Where-Object { $_.AccountName -ne "ANONYMOUS LOGON" -and $_.LogonType -eq "10" } | Sort-Object TimeCreated
⚫️ LogonType = 10 - это удалённый интерактивный вход (RDP).
⚫️ Можно заменить на 2, если нужен локальный интерактивный логон.
⚫️ Или убрать фильтр, чтобы увидеть всё.
Второй способ:Похожий вариант только в определенный промежуток времени и определенный пользователь.
Проверка событий подключения на сервер:
Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" |
>> Where-Object { $_.TimeCreated -ge '2025-09-01' -and $_.TimeCreated -le '2025-09-17' } |
>> Where-Object { $_.Message -like '*username.aa*' } |
>> Format-Table TimeCreated, Id, Message -AutoSize
Если на другом компьютере в локалке
Get-WinEvent -ComputerName 'winserver' -FilterHashtable @{ LogName='Microsoft-Windows-TerminalServices-LocalSessionManager/Operational'; StartTime=(Get-Date '2025-09-01'); EndTime=(Get-Date '2025-10-01 23:59:59') } |
Where-Object { $_.Message -like '*username.aa*' } |
Format-Table TimeCreated, Id, Message -AutoSize
#Windows #Security #PowerShell