统计已登录服务器的 Windows 用户数

统计已登录服务器的 Windows 用户数

有没有办法以编程方式收集过去 30 天内或两个日期之间登录过 Windows 服务器(特别是 2008 R2)的用户列表?有 2 个活动目录服务器,所有用户都是同一域的成员。

出于 SPLA 原因,我的最终目标是自动获取我们每台服务器的唯一用户列表。

答案1

这是手动的,而不是通过程序,但您可以在事件查看器中创建一个过滤器,该过滤器将仅显示您的登录事件。右键单击文件夹Custom Views并选择该Create Custom View选项。不幸的是,对于此过滤器,您必须编辑 XML。以下是过滤器的 XML 的样子:

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
      *[System[(EventID=4624)]] 
      and 
      *[EventData[Data[@Name='LogonType'] and (Data='2' or Data='10' or Data='11')]]
    </Select>
    <Suppress Path="Security"> 
       *[EventData[Data[@Name='TargetDomainName'] and  (Data = 'Window Manager')]]
    </Suppress> 
  </Query>
</QueryList>

您可能希望编辑此内容以包括登录类型 7(解锁锁定的会话)。有关登录类型代码的更多信息,请参见此处:

http://www.windowsecurity.com/articles-tutorials/misc_network_security/Logon-Types.html

请注意,这不会按日期范围进行过滤:仅按登录进行过滤。但是,一旦缩小了该部分的范围,就可以轻松地在事件查看器中手动浏览日期范围。

不幸的是,当我使用“连接到另一台计算机”选项时,即使防火墙已关闭,此过滤器也不起作用。

答案2

没有简单的方法。首先想到的是梳理安全日志。您正在寻找事件 ID 4624。注意登录类型(如果您的目的是计算交互式登录,则为 2,10,11)。

根据安全日志条目的生成速度和日志的大小,日志可能会在 30 天周期之前被覆盖。

最好强制使用登录脚本,将计数集中到某个中心位置。

相关内容