排序对象对Get-EventLog没有影响

时间:2018-08-02 16:07:34

标签: windows powershell get-eventlog

我正在尝试通过powershell在“安全事件日志”中找到最早的保留事件。

使用以下命令:(Get-EventLog Security | Sort-Object -Property Time -Descending)

这将返回一个列表,该列表未排序最少。 我在这里做什么错了?

2 个答案:

答案 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