История входа служб удаленных рабочих столов для указанного пользователя c - PullRequest
0 голосов
/ 25 марта 2020

Я нашел скрипт здесь: https://serverfault.com/questions/479048/remote-desktop-services-login-history

Вот скрипт:

Get-Eventlog -LogName Security | where {$_.EventId -eq "4624"} | select-object @{Name="User"
;Expression={$_.ReplacementStrings[5]}}  | sort-object User -unique |ogv

Цель состоит в том, чтобы найти определенного c пользователя и посмотреть, когда в последний раз он входил на сервер терминалов, и с помощью этого скрипта я не могу сделать так, чтобы он также отображал дату, только имя пользователя, я попытался добавить какое-то свойство после запуска get член, но безуспешно

спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Попробуйте это с помощью https://community.spiceworks.com/topic/2067489-powershell-script-to-get-rdp-session-history

Get-WinEvent -FilterHashTable @{LogName='Security';ID=4624} | Where-Object {$_.Properties[5].Value -eq 'UserName'} | Select-Object @{n='User';e={$_.Properties[5].Value}},@{n='Logon time';e={$_.Timecreated}}

Замените 'UserName' на нужного вам пользователя.

0 голосов
/ 25 марта 2020

Для этого вы можете использовать командлет Get-WinEvent, как показано ниже:

$user = 'The SamAccountName of the user you want to track'

Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} -MaxEvents 100 | 
    Where-Object {$_.Properties[5].Value -eq $user } |
    Select-Object -Property @{Name = 'UserName'; Expression = { $_.Properties[5].Value }}, 
                            @{Name = 'LogonTime'; Expression = { $_.TimeCreated }},
                            MachineName | 
    Out-GridView

# $_.Properties[5].Value --> TargetUserName

-MaxEvents 100 является лишь примером. Измените это значение или удалите параметр полностью, если вам нужно


Чтобы получить только 3 события, используйте параметр -MaxEvents со значением 3. Вы также можете выбрать (последние) 3 события после этого если это то, что вам нужно, добавив -Last 3 к команде Select-Object.

Чтобы увидеть, что массив Properties содержит для этого идентификатора события, вы можете сделать

$props = (Get-WinEvent -MaxEvents 1 -FilterHashtable @{LogName='Security';ID=4624}).Properties
for ($i = 0; $i -lt $props.Count; $i++) {
    "Properties[$i].Value --> {0}" -f $props[$i].Value
}

Сравнение этого к тому, что вы можете прочитать в XML -виде eventvwr.exe:

SubjectUserSid            = 0
SubjectUserName           = 1
SubjectDomainName         = 2
SubjectLogonId            = 3
TargetUserSid             = 4
TargetUserName            = 5
TargetDomainName          = 6
TargetLogonId             = 7
LogonType                 = 8
LogonProcessName          = 9
AuthenticationPackageName = 10
WorkstationName           = 11
LogonGuid                 = 12
TransmittedServices       = 13
LmPackageName             = 14
KeyLength                 = 15
ProcessId                 = 16
ProcessName               = 17
IpAddress                 = 18
IpPort                    = 19

Эти значения отличаются при запросе других событий и действительны только для LogName='Security';ID=4624

...