找出一个特定账户已经logging的所有服务器的名称,或者有一个断开连接的会话

嗨我们有大约400多台服务器和一个域+ 3个子域,每当我们更改密码时(安全原因),只要我们解锁,帐户就会一直被locking。 那么有没有办法可以列出所有的服务器或工作站列出,如果用户帐户login或有一个断开连接或闲置的会话,使我们注销。

以下粗略的概念certificate可能会让你开始。 这个想法是使用Powershellsearch给定SID的login/注销事件的事件日志。

  1. 在PowerShell中使用(Get-ADUser <username>).SID查找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} 

xmlfilter只返回login/注销事件。 通过仅使用MaxEventsselect1个事件,您将获得通过login或注销消息传递给Get-WinEvent方法的所有服务器的列表。 login消息是SID仍然login的服务器。