Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 排序对象对获取事件日志没有影响_Windows_Powershell_Get Eventlog - Fatal编程技术网

Windows 排序对象对获取事件日志没有影响

Windows 排序对象对获取事件日志没有影响,windows,powershell,get-eventlog,Windows,Powershell,Get Eventlog,我正在尝试通过powershell在安全事件日志中查找最早保留的事件 使用以下命令:(获取事件日志安全性|排序对象-属性时间-降序) 这将返回一个至少未排序的列表。 我做错了什么?时间是为输出目的而生成的字符串,不是datetime对象,因此正在进行的排序不是按时间顺序的,而是不存在的 查看dotnetypes.format.ps1xml,您将看到它使用的是TimeGenerated属性的格式化版本 <TableColumnHeader> <Label>Time&

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

使用以下命令:
(获取事件日志安全性|排序对象-属性时间-降序)

这将返回一个至少未排序的列表。 我做错了什么?

时间是为输出目的而生成的字符串,不是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。