Windows 排序对象对获取事件日志没有影响
我正在尝试通过powershell在安全事件日志中查找最早保留的事件 使用以下命令:Windows 排序对象对获取事件日志没有影响,windows,powershell,get-eventlog,Windows,Powershell,Get Eventlog,我正在尝试通过powershell在安全事件日志中查找最早保留的事件 使用以下命令:(获取事件日志安全性|排序对象-属性时间-降序) 这将返回一个至少未排序的列表。 我做错了什么?时间是为输出目的而生成的字符串,不是datetime对象,因此正在进行的排序不是按时间顺序的,而是不存在的 查看dotnetypes.format.ps1xml,您将看到它使用的是TimeGenerated属性的格式化版本 <TableColumnHeader> <Label>Time&
(获取事件日志安全性|排序对象-属性时间-降序)
这将返回一个至少未排序的列表。
我做错了什么?时间是为输出目的而生成的字符串,不是datetime对象,因此正在进行的排序不是按时间顺序的,而是不存在的
查看dotnetypes.format.ps1xml,您将看到它使用的是TimeGenerated
属性的格式化版本
<TableColumnHeader>
<Label>Time</Label>
<Width>13</Width>
</TableColumnHeader>
...
...
<PropertyName>TimeGenerated</PropertyName>
<FormatString>{0:MMM} {0:dd} {0:HH}:{0:mm}</FormatString>
时间
13
...
...
时间生成
{0:MMM}{0:dd}{0:HH}:{0:mm}
这样做是为了有更友好的默认输出,并警告您所遇到的问题
因此,排序对象
正在使用空值“工作”,因此缺少可见的更改
无论是哪种方式,都可以使用属性TimeGenerated
属性来代替“Time”是出于输出目的而生成的字符串,而不是datetime对象,因此正在进行的排序不是按时间顺序的,而是不存在的
查看dotnetypes.format.ps1xml,您将看到它使用的是TimeGenerated
属性的格式化版本
<TableColumnHeader>
<Label>Time</Label>
<Width>13</Width>
</TableColumnHeader>
...
...
<PropertyName>TimeGenerated</PropertyName>
<FormatString>{0:MMM} {0:dd} {0:HH}:{0:mm}</FormatString>
时间
13
...
...
时间生成
{0:MMM}{0:dd}{0:HH}:{0:mm}
这样做是为了有更友好的默认输出,并警告您所遇到的问题
因此,排序对象
正在使用空值“工作”,因此缺少可见的更改
无论采用哪种方式,都可以使用属性
TimeGenerated
来代替这不是Get EventLog
的问题,而是因为Get EventLog
的输出没有属性Time
使用Get Member
显示可用属性的列表
Get-EventLog | Get-Member
您将看到,有一个TimeGenerated
属性,您可以使用它
Get-EventLog Security | Sort-Object -Property TimeGenerated -Descending
此外,我想补充一点,这是默认顺序。但是如果您想切换订单,我建议使用Get-WinEvent
,它有一个-最早的
开关
Get-WinEvent -LogName Security -Oldest
这不是
Get EventLog
的问题,而是由Get EventLog
的输出没有时间属性造成的
使用Get Member
显示可用属性的列表
Get-EventLog | Get-Member
您将看到,有一个TimeGenerated
属性,您可以使用它
Get-EventLog Security | Sort-Object -Property TimeGenerated -Descending
此外,我想补充一点,这是默认顺序。但是如果您想切换订单,我建议使用Get-WinEvent
,它有一个-最早的
开关
Get-WinEvent -LogName Security -Oldest
时间
根本不是事件的属性。不幸的是,排序对象
不关心<代码>排序对象-属性香蕉
将给出相同的结果。即使这确实有效,但是,如果安全日志很大,速度可能会非常慢。请尝试(Get WinEvent-LogName Security-Olestate-MaxEvents 1)。改为使用TimeCreated
。如果PowerShell会通知用户该属性不存在,这将非常有用。@lit非常确定这是相关的Time
根本不是事件的属性。不幸的是,排序对象
不关心<代码>排序对象-属性香蕉将给出相同的结果。即使这确实有效,但是,如果安全日志很大,速度可能会非常慢。请尝试(获取WinEvent-LogName Security-Oldest-MaxEvents 1)。改为使用TimeCreated
。如果PowerShell会通知用户该属性不存在,这会很有帮助。@lit非常确定这是相关的lol,当时正在读取EventLogEntry
的格式数据项(是的,您绝对正确)我正准备好好读一读。我是stuff toolol的smrt,刚刚阅读了EventLogEntry
的格式数据条目(是的,你完全正确),我正要阅读它以确定。我很感谢你的帮助。我应该考虑使用Get-Member。谢谢您的帮助。我应该考虑使用Get Member。