Windows 中使用 Win32_NTLogEvent 类的相关登录和注销事件

Jam*_*mes 5 windows wmi events login logoff

我正在尝试从Win32_NTLogEvent类获取登录和注销事件。为此,我使用了以下 WMI 查询:

PATH Win32_NTLogEvent WHERE "(EventIdentifier = 4648 OR EventIdentifier = 4647 OR EventIdentifier = 4634) And TimeGenerated > '201811010000'" GET /ALL
Run Code Online (Sandbox Code Playgroud)

查询工作正常,并为我带来了所有相关的登录和注销的响应。问题是:我如何将这两个事件联系起来?我的意思是,如何将哪个注销与某个登录事件相关联?

分析事件4648(登录尝试)和4634(帐户已注销)的(不太清楚)文档,看起来两者都有一个链接的 ID,考虑SubjectLogonId4648 事件和TargetLogonId4634 事件。

考虑到这些信息,我正在解析返回的事件,从 InsertionStrings 获取 Id 并尝试找到链接的 ID,但我没有找到任何。

是我误解了什么还是我正在寻找错误的信息?

我在 Windows 10 和 Windows Server 2012 中对其进行了测试,但我正在寻找可以在尽可能多的版本中使用的东西。

一些背景:

简而言之,我想知道某些特定日期的登录/注销时间和会话持续时间。我能够使用以下 WMI 查询(Win32_NetworkLoginProfile类)获取特定用户的登录和注销时间:

PATH Win32_NetworkLoginProfile WHERE "Name='DOMAIN\\user'" GET LastLogon, LastLogoff

我对第一个查询的意图几乎相同,但我想要所有用户的信息而不知道每个用户名。我最好的猜测是使用所描述的 Win32_NTLogEvent 类,但这不是强制性的。

小智 2

您正在尝试使用 4648 登录尝试。此事件仅表明已进行尝试以及是否成功。

您应该查找的事件是4624 “帐户已成功登录。”,该事件的 与4634“帐户已注销”Logon ID相关。Logon ID

要评论“LastLogon、LastLogoff”的后台语句,这些值会在每次登录或注销时在活动目录中更新,但不会保留历史记录。

我知道 WBEM 界面自 Windows XP 以来就已存在,我无法找到证据证明您的 powershell 查询可以在该平台上运行,但是,它们应该无需修改即可在 Windows 7+ 和 Server 2008+ 上运行。