在Windows Server 2012中查找RDP会话中用户的断开时间

10
我们有一批开发机器,开发人员通过RDP登录,通常不会注销,而是仅断开连接。作为本地管理员,我可以强制注销,但我想检查用户何时断开连接。
从任务管理器中,我只能看到用户名及其状态。

enter image description here

有没有一种方法可以使用任务管理器、PowerShell、cmd或任何其他途径发现用户何时断开连接?
4个回答

12
您可以使用Windows命令 query user 用户名 /server:服务器名称 或者只输入 query user /server:服务器名称 来查找所有活动或已断开的会话。
下面是样例输出,出于隐私原因,我已经模糊了我的信息:

图片描述

我还创建了一个PowerShell脚本,以自动执行此任务,这是链接:Powershell to find out disconnected RDP session and log off at the same time

这很好,但似乎某些Windows副本默认情况下已禁用RPC服务。 - tresf
@tresf 这是2017年的内容,可能已经不再相关。 - LT-
它仍然是最受赞同的,因此这并不是针对解决方案的轻蔑,而是对其他人的警告。同时,虽然代码更多,但我在Reddit上找到了这个解决方案,它可以在没有RPC的情况下工作。我已经在Windows 11上测试了这个最小化示例。不幸的是,该解决方案没有用户名,这对我所寻找的内容至关重要。最终,我使用了另一个完全不同的解决方案,但我想分享一下。 :) - tresf

3
据我所知,这并不在安全日志中。正确的查找位置是在“Microsoft事件查看器”下的“应用程序和服务日志 => Microsoft => Windows => TerminalServices-LocalSessionManager => 操作”,然后在操作日志下查找。
要查找的事件ID是24(已断开的用户会话)。事件ID 25 是重新连接。

非常好,谢谢!我纠正了路径,它是不完整的。在那个视图中,我只能找到真实用户连接,正是我正在寻找的。 - Naigel

1
你可以启动Windows事件查看器并在Windows日志-->安全下检查。按'任务类别=注销'进行过滤。你可以将其导出为xml以便更轻松地阅读。

enter image description here


为什么不编辑您之前的答案并包含这个内容,而不是发布两个相同的答案呢? - Patrick
答案几乎正确,当然我找不到注销的记录,因为他没有注销,只是断开了连接。无论如何,我找不到任何细节,我的安全日志历史记录太短了。 - Naigel
1
注销与在RDP中断开连接是完全不同的事情。 - bluuf

0

开始-->运行-->Eventvwr-->Windows日志-->安全性。按'Task Category = Logoff'过滤


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接