如何获取 Windows 10 最后一次锁定/解锁的时间戳?(不是登录/注销。)

L B*_*L B 2 command-line windows-10

我之前在 Stack Exchange 上得到过这个命令:

wevtutil qe System /rd /f:Text | findstr "4800 4801"
Run Code Online (Sandbox Code Playgroud)

我得到了大量的输出,格式混合。大多数看起来像:

  Date: 2020-11-17T17:44:03.5480000Z
  Date: 2020-11-17T17:43:50.8480000Z
  Date: 2020-11-16T01:36:04.9480000Z
...
Run Code Online (Sandbox Code Playgroud)

这些数字应该是“最后锁定”或“最后解锁”事件。他们不是。当我锁定/解锁机器并重新运行命令时,它们不会更新。他们似乎指的是登录/注销时间。

如果我使用:

wevtutil qe System /rd /f:Text | findstr "7001 7002"
Run Code Online (Sandbox Code Playgroud)

然后我只会得到无意义的输出,例如:

  Event ID: 7001
  Event ID: 7002
  Event ID: 7001
Run Code Online (Sandbox Code Playgroud)

wevtutil此时我已经执行了一百万个不同的命令,并无休止地阅读神秘的帮助页面/网页以及旧的 SE 问题。我一直对从这个命令得到的荒谬且不断变化的输出感到摸不着头脑。此时此刻,我感觉自己已经尝试了一切。该命令以及整个“事件日志”似乎根本不可靠,甚至不一致。我真的不知道该怎么理解,微软的支持页面感觉就像我正在阅读来自另一个世界的外星人写的文字。

必须有一种更好、更正确的方法来简单地获取机器上次锁定/解锁的时间......对吧?我根本不明白为什么这会成为一个问题。是否没有一个单一的、定义明确的“Windows API”,您可以在命令行上执行以获取类似 Windows 的基本统计信息/信息,而无需了解其内部的所有信息?

如何简单地获取当前用户上次锁定或解锁(两者都可以,但两者组合最佳)机器的日期/时间/时间戳?

小智 5

首先,您需要确保记录这些事件。打开 secpol.msc 转到本地计算机上的高级审核策略、系统审核策略、登录/注销,在其中配置“审核其他登录/注销事件”,以便记录成功。我是新人,所以 SE 屏蔽了我的图片,希望您可以在下面访问它。一旦启用,这些事件将开始被记录,如果它被禁用,您将不会记录任何事件。

要查看刚刚锁定的时间:

wevtutil qe Security /q:"*[System[(EventID=4800)]]" /f:Text | findstr "Date"
Run Code Online (Sandbox Code Playgroud)

查看刚刚解锁的时间:

wevtutil qe Security /q:"*[System[(EventID=4801)]]" /f:Text | findstr "Date"
Run Code Online (Sandbox Code Playgroud)

要查看锁定和解锁时间:

wevtutil qe Security /q:"*[System[(EventID=4800 or EventID=4801)]]" /f:Text | findstr "Date"
Run Code Online (Sandbox Code Playgroud)

但是,上述命令不会按当前用户进行过滤,这将为您提供来自所有本地用户的日志。不幸的是,这些日志不会将当前用户存储在“用户”字段中,奇怪的是,它存储在详细信息中,因此没有简单的方法可以使用它提供的简单查询来过滤它们。如果删除| 从上述任何命令中查找str“日期”,您将获得日志的完整详细信息,而不仅仅是时间,并且您可以使用其他内容来使用“帐户名称:”来过滤您想要查看的用户在详细信息字段中。

截屏