环境
Windows Server 2012 以上 ,目的只是查询windows server 远程登录的记录
日期时间,登录IP ,登录的用户。
方法
使用管理员打开Powershell 运行一下脚本 (来自 Chatgpt)
# 查询远程桌面登录的成功事件并提取详细信息 Get-WinEvent -LogName Security -FilterXPath "*[System[(EventID=4624)] and EventData[Data[@Name='LogonType'] and (Data='10')]]" | ForEach-Object { # 解析事件详细信息 $xml = [xml]$_.ToXml() [PSCustomObject]@{ TimeCreated = $_.TimeCreated AccountName = $xml.Event.EventData.Data | Where-Object { $_.Name -eq 'TargetUserName' } | Select-Object -ExpandProperty '#text' SourceIP = $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' } } | Format-Table -AutoSize
输出说明
TimeCreated:登录事件发生的时间。
AccountName:登录成功的账户名称。
SourceIP:远程桌面连接的来源 IP 地址。
LogonType:登录类型(值 10 表示远程桌面连接)。
结果示例
解决问题关键
- XML 解析:事件日志中的关键信息(如 IP 地址、账户名)存储在 XML 数据中,需要手动提取。
- LogonType = 10:代表远程桌面连接,筛选时需特别指定。
- 定制输出:通过 PSCustomObject 格式化输出,更易于阅读。