找出特定帐户已登录或断开连接会话的所有服务器的名称

找出特定帐户已登录或断开连接会话的所有服务器的名称

您好,我们有大约 400 多台服务器和一个域 + 3 个子域,每当我们更改密码 [出于安全原因] 时,帐户就会在我们解锁后立即被锁定。那么,有没有办法可以列出所有服务器或工作站,以列出用户帐户是否已登录或是否有断开连接或空闲会话,以便我们注销。

答案1

遵循粗略的概念验证可能会帮助您入门。想法是使用 Powershell 在事件日志中搜索给定 SID 的登录/注销事件。

  1. (Get-ADUser <username>).SID在 Powershell 中使用查找 SID
  2. 在 powershell 中执行
   $query = @"
   <QueryList>
     <Query Id="0" Path="System">
       <Select Path="System">
         *[EventData[Data[@Name='UserSid']='<SID>']]
         and (*[System[(EventID='7001')]] or *[System[(EventID='7002')]])
      </Select>
     </Query>
   </QueryList>
 "@
('server1', 'server2) | % {Get-WinEvent -ComputerName $_ -Filterxml $query -MaxEvents 1}

xml 过滤器仅返回登录/注销事件。通过使用 仅选择 1 个事件,您将获得传递给该方法的所有带有登录或注销消息的MaxEvents服务器的列表。登录消息是该 SID 仍处于登录状态的服务器。Get-WinEvent

相关内容