【问题标题】:Powershell: How to pull Event Viewer message and timePowershell:如何拉事件查看器消息和时间
【发布时间】:2021-08-16 15:49:20
【问题描述】:

我正在尝试将用户从安全范围内的注销事件中拉出来。 使用下面的代码我可以提取用户名,但我不确定如何修改它以从事件日志中提取时间?

非常感谢

$events = get-eventlog -logname Security -instanceid 4634 -Newest 5 
  foreach ($ev in $events) {
     $me = $ev.Message   -match "(Account Name:).*"  
     if ($me) {  
         $matches[0] 

     }                                                        
  }

【问题讨论】:

    标签: powershell event-viewer


    【解决方案1】:

    我不确定您要做什么。但是,Get-EventLog 已被弃用,取而代之的是 Get-WinEvent,后者更快且具有更好的过滤选项,示例可能如下所示:

    $FilterHash = @{
        LogName = 'Security'
        Id      = 4624
    }
    
    Get-WinEvent -FilterHashtable $FilterHash -MaxEvents 5 |
    ForEach-Object{
        If($_.Properties[1].Value -eq $me) {
            Write-Host "Account Name : ($_.Properties[1].Value)"
        }
    }
    

    -FilterHashtable 参数是最受欢迎的,但您也可以在文档中查看 -FilterXPath-FilterXML 参数。

    重要提示:就我而言,我没有 4634 个事件。可以通过查看事件查看器中给定日志条目的 XML 视图来确定属性值和数组位置。只需往下看,然后从 0 开始计算数组索引。

    另一种方法是仅隔离单个条目并将属性回显到屏幕,然后再次计数以获得正确的索引号。这很重要,因为不同的信息可能在不同的事件等中处于不同的位置。

    Get-WinEvent 真的很健壮。我强烈建议您查看文档!

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 2012-07-07
      • 2021-01-20
      • 2014-10-02
      • 1970-01-01
      • 2011-05-28
      • 2022-01-14
      • 2017-10-29
      相关资源
      最近更新 更多