特定用户的远程桌面服务登录历史记录
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' 替换为您想要的用户。
我在这里找到了一个脚本: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' 替换为您想要的用户。