PowerShell从事件查看器获取所有条目的第一个日期

时间:2018-10-15 06:14:16

标签: powershell

我正在尝试从从事件查看器获得的一系列日期中获取每天的首次登录时间。 我已经有了排序数组,并提供了我感兴趣的信息:

  

TimeGenerated消息
  ------------- -------
  10/10/2018 1:15:23 PM一个帐户已成功登录....
  10/10/2018 12:02:55 PM一个帐户已成功登录....
  9/10/2018 3:23:43 PM一个帐户已成功登录....
  9/10/2018 10:38:41 AM一个帐户已成功登录....
  9/10/2018 10:20:40 AM一个帐户已成功登录....
  8/10/2018 1:50:30 PM一个帐户已成功登录....
  8/10/2018 1:48:19 PM一个帐户已成功登录....

我希望得到的是每天的第一条记录:

  

TimeGenerated消息
  ------------- -------
  8/10/2018 1:48:19 PM一个帐户已成功登录....
  9/10/2018 10:20:40 AM一个帐户已成功登录....
  10/10/2018 12:02:55 PM一个帐户已成功登录....

我怀疑我需要先按“天”对所有内容进行排序,然后再从每个过滤器中找到最新的完整日期,并且只要对其进行了排序,就可以采用第一个,但是我无法按天过滤此列表

$Logons = Get-EventLog Security -Source Microsoft-Windows-Security-Auditing | select TimeGenerated,Message | Where TimeGenerated -GT $StartDate | where Message -like "*An account was successfully logged on*" 

该数组使我可以选择自己感兴趣的独特日子; $Logons.timegenerated.day | sort -Unique,但我不知所措,不知道如何匹配它们以从该过滤器中获取原始值。

1 个答案:

答案 0 :(得分:2)

我将按天分组,然后分别从每天中选择第一条记录:

$events =  Get-EventLog Security -Source Microsoft-Windows-Security-Auditing

$events | group { $_.TimeGenerated.Date } | % { $_.Group | sort TimeGenerated | select -First 1 }