我正在尝试通过powershell在“安全事件日志”中找到最早的保留事件。
使用以下命令:(Get-EventLog Security | Sort-Object -Property Time -Descending)
这将返回一个列表,该列表未排序最少。 我在这里做什么错了?
答案 0 :(得分:3)
“时间”是出于输出目的而不是日期时间对象而生成的 string ,因此正在进行的排序不是按时间顺序进行的,而是不存在的。
查看DotNetTypes.format.ps1xml,您会发现它正在使用TimeGenerated
属性的格式化版本。
<TableColumnHeader>
<Label>Time</Label>
<Width>13</Width>
</TableColumnHeader>
...
...
<PropertyName>TimeGenerated</PropertyName>
<FormatString>{0:MMM} {0:dd} {0:HH}:{0:mm}</FormatString>
这样做是为了获得更友好的默认输出,并警告您所遇到的问题。
因此,sort-object
使用空值正在“工作”,因此缺少可见的变化。
无论哪种方式,都使用属性TimeGenerated
属性
答案 1 :(得分:3)
这不是Get-EventLog
的问题,而是由于Get-EventLog
的输出没有Porperty Time
而引起的。
使用Get-Member
显示可用属性的列表。
Get-EventLog | Get-Member
您会看到,有一个TimeGenerated
属性可供使用。
Get-EventLog Security | Sort-Object -Property TimeGenerated -Descending
此外,我想补充一点,那还是默认顺序。但是,如果要切换顺序,我建议改用Get-WinEvent
,它有一个-Oldest
开关。
Get-WinEvent -LogName Security -Oldest