2017-01-19 124 views
0

属性(System.Collections.Generic.IList)数据我运行这个(1号线是好的,只是第2行,我知道心不是右):Powershell |位置对象从获取-WinEvent

$specificEvent = Get-WinEvent -FilterHashtable @{"ProviderName"="Microsoft-Windows-Security-Auditing";Id=4648} | select -First 1 
$specificEvent | ? {($_).Properties[1] -eq "whatever"} 

而且它不是加工。没有感到惊讶,但有没有一种真正的方法来获取System.Collections.Generic.IList类型的属性数据?

我也可以访问相同的数据是这样的:

$specificEvent | % { 
    ([xml]$_.ToXml()).Event.EventData.Data 
} 

但同样我不知道我怎么可以利用的是,在对象。

我也想知道是否有人知道如何(在foreach循环VS处理)的选择对象中显示的数据,所以当我终于得到过滤工作,我可以显示什么,我需要回去。

对任何愿意帮助的人,非常感谢!

UPDATE: 基于下面我能够工艺这段代码提供了答案。它不是完美的,但得到了那份工作做得相当不错

$EventIDs = (Get-WinEvent -FilterHashtable @{ 
    "ProviderName"="Microsoft-Windows-Security-Auditing"; 
    StartTime=(get-date).AddHours(-24); 
    Id=4625} | select RecordID).RecordID 

Foreach ($r in $EventIDs) { 
    $EvXML = $null 
    [xml]$EvXML = (Get-WinEvent -LogName "Security" -FilterXPath "*[System[EventRecordID=$($r)]]").ToXML() 

    $Events = $null 
    $Events = For ($i=0; $i -lt $EvXML.Event.EventData.Data.Count; $i++) { 
     New-Object -TypeName psobject -Property (
      [ordered]@{Name = $EvXML.Event.EventData.Data[$i].Name 
      Value = $EvXML.Event.EventData.Data[$i].'#text'} 
     ) 
    } 

    write-host ($events | ? {$_.Name -eq "TargetUserName"}).value "|" ($events | ? {$_.Name -eq "TargetDomainName"}).value "|" ($events | ? {$_.Name -eq "IPAddress"}).value ":" ($events | ? {$_.Name -eq "IPPort"}).value 
} 
+0

你的第一行可能会或可能不会选择一个事件其中'性能[1] -eq“无所谓”'你希望你的下一个步骤到一定的属性包含一定的值只作用于事件? – Clayton

回答

1

从事件日志中提取数据时,首先得到我想要的登录到一个XML类型的变量,则变量数据转换为对象,像这样我做什么:

[xml]$EvXML = (Get-WinEvent -FilterHashtable @{"ProviderName"="Microsoft-Windows-Security-Auditing";Id=4648} -MaxEvents 1).ToXML() 
$Event = For ($i=0; $i -lt $EvXML.Event.EventData.Data.Count; $i++) { 
    New-Object -TypeName psobject -Property ([ordered]@{Name = $EvXML.Event.EventData.Data[$i].Name 
                 Value = $EvXML.Event.EventData.Data[$i].'#text'}) 
} 

一旦数据是一个对象数组,就可以像任何其他PS对象数组一样做任何事情。如果你想在系统中的数据,代替$EvXML.Event.EventData$EvXML.Event.System,你可以键关机任何您想要的字段。要查看可用于任何事件的引用,请参阅事件查看器中的XML视图。然后,你就可以提取并通过引用$Event[#].Name$Event[#].Value处理任何单件你想要的数据。