【问题标题】:Format-Table returning blank column格式表返回空白列
【发布时间】:2013-03-14 20:26:13
【问题描述】:

我无法仅显示命令的 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 -或 $.EventID -eq 4801} |格式表时间

Time                                                                                                                                                                                          
----                                                                                                                                                                                          

有什么想法吗?

【问题讨论】:

    标签: powershell powershell-cmdlet


    【解决方案1】:

    它是空白的,因为没有 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>
    .....
    

    【讨论】:

      猜你喜欢
      • 2021-03-11
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多