Доброго дня.
Помогите разобраться с написанием скрипта.
Задача получить время работы пользователя в rdp сессии в течении дня.
Пользователи цепляются удаленно по rdp на свой компьютер windows 7.
Если получить информацию по входу вроде как понятно, обращаемся к журналу безопасности и берем определенное событие (4624) с определенным типом входа (10 и 7).
get-eventLog -LogName Security -after (Get-date -hour 0 -minute 0 -second 0) | Where-Object {$_.EventID -eq '4624'}|Where-Object {$_.Message -match 'Тип входа:\s+(10)\s' -or $_.Message -match 'Тип входа:\s+(7)\s'} |
foreach {
$time = $_.TimeGenerated
$message = $_.message.split("`n") | %{$_.trimstart()} | %{$_.trimend()}
$UserName = (([regex]'(?<=Новый вход:.*[\s\S]*.*записи:.\s)([\s\S]*)(?=\s\n.*Домен)').match($_.message).value)
$time
$username}
получаю время входа и имя пользователя. Правда несколько событий с одинаковым временем получается.
Но вот как получить время выхода?
если делать так:
Get-EventLog -LogName Security -after (Get-date -hour 0 -minute 0 -second 0)| ?{(4634) -contains $_.EventID -and $_.Message -match 'Тип входа:\s+(3)\s' }
то получается куча событий, по времени не совпадающему входу rdp.
не пойму как получить хотя бы правильное время входа и выхода, ну или цифру общего времени в сессии за день?