特定用户的远程桌面服务登录历史记录

Remote Desktop Services login history for specific user

我在这里找到了一个脚本: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

目标是搜索特定用户并查看他最后一次登录终端服务器是什么时候,使用该脚本,我也无法让它显示日期,只有用户名,我尝试在 运行 get-member 之后添加一些 属性,但没有成功

感谢您的帮助

您可以使用 Get-WinEvent cmdlet,如下所示:

$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 个事件,请使用值为 3 的 -MaxEvents 参数。 您还可以 select 之后的(最后)3 个事件,如果这是您想要的,通过将 -Last 3 附加到 Select-Object 命令。

要查看此事件 ID 的 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
}

将此与您在 eventvwr.exe 的 XML 视图中阅读的内容进行比较:

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

有效

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' 替换为您想要的用户。