环境

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 格式化输出,更易于阅读。