我只在显示命令的Time
列时遇到问题。
Get-EventLog -log Security | where {$_.EventID -eq 4800 -or $_.EventID -eq 4801}
返回:
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
167513 Mar 14 10:31 SuccessA... Microsoft-Windows... 4801 The workstation was unlocked....
167506 Mar 14 10:14 SuccessA... Microsoft-Windows... 4800 The workstation was locked....
167499 Mar 14 10:08 SuccessA... Microsoft-Windows... 4801 The workstation was unlocked....
但是如果我只希望看到Time
列,我什么都得不到:
Get-EventLog -log安全性|其中{$ .EventID -eq 4800 -or $ .EventID -eq 4801} |格式表时间
Time
----
有什么想法吗?
答案 0 :(得分:3)
它是空白的,因为没有Time
属性。它是Get-EventLog
的默认视图中使用的别名。
PS > Get-EventLog -LogName System | gm
TypeName: System.Diagnostics.EventLogEntry#System/EventLog/2147489661
Name MemberType Definition
---- ---------- ----------
....
TimeGenerated Property datetime TimeGenerated {get;}
TimeWritten Property datetime TimeWritten {get;}
UserName Property string UserName {get;}
EventID ScriptProperty System.Object EventID {get=$this.get_EventID() -band 0x...
使用Format-Table TimeGenerated
获取事件发生的时间,并使用TimeWritten
获取将时间保存到日志中。
默认视图中的Time
列TimeGenerated
格式为{0:MMM} {0:dd} {0:HH}:{0:mm}
。您可以在Powershell中的一个格式文件中看到这一点。对于这种情况,它位于“C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml”中:
.....
<ViewSelectedBy>
<TypeName>System.Diagnostics.EventLogEntry</TypeName>
</ViewSelectedBy>
.....
<TableColumnHeader>
<Label>Time</Label>
<Width>13</Width>
</TableColumnHeader>
.....
<TableColumnItem>
<PropertyName>TimeGenerated</PropertyName>
<FormatString>{0:MMM} {0:dd} {0:HH}:{0:mm}</FormatString>
</TableColumnItem>
.....