排序对象对 Get-EventLog 没有影响
Sort-Object having no effect on Get-EventLog
我正在尝试通过 powershell 在安全事件日志中查找最旧的保留事件。
使用以下命令:(Get-EventLog Security | Sort-Object -Property Time -Descending)
这个returns 一个没有排序的列表。
我在这里做错了什么?
"Time" 是出于输出目的生成的 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
是 "working",具有空值,因此没有可见的变化。
两种方式都使用 属性 TimeGenerated
属性 代替
这不是 Get-EventLog
的问题,而是由于 Get-EventLog
的输出没有属性 Time
。
使用 Get-Member
显示可用属性列表。
Get-EventLog | Get-Member
你会看到,有一个 TimeGenerated
属性,你可以使用它。
Get-EventLog Security | Sort-Object -Property TimeGenerated -Descending
此外,我想补充一点,这是默认顺序。但是如果你想切换顺序,我建议改用 Get-WinEvent
,它有一个 -Oldest
开关。
Get-WinEvent -LogName Security -Oldest
我正在尝试通过 powershell 在安全事件日志中查找最旧的保留事件。
使用以下命令:(Get-EventLog Security | Sort-Object -Property Time -Descending)
这个returns 一个没有排序的列表。 我在这里做错了什么?
"Time" 是出于输出目的生成的 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
是 "working",具有空值,因此没有可见的变化。
两种方式都使用 属性 TimeGenerated
属性 代替
这不是 Get-EventLog
的问题,而是由于 Get-EventLog
的输出没有属性 Time
。
使用 Get-Member
显示可用属性列表。
Get-EventLog | Get-Member
你会看到,有一个 TimeGenerated
属性,你可以使用它。
Get-EventLog Security | Sort-Object -Property TimeGenerated -Descending
此外,我想补充一点,这是默认顺序。但是如果你想切换顺序,我建议改用 Get-WinEvent
,它有一个 -Oldest
开关。
Get-WinEvent -LogName Security -Oldest