格式表返回空白列

时间:2013-03-14 11:19:20

标签: powershell cmdlets

我只在显示命令的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                                                                                                                                                                                          
----                                                                                                                                                                                          

有什么想法吗?

1 个答案:

答案 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获取将时间保存到日志中。

默认视图中的TimeTimeGenerated格式为{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>
.....