在PowerShell中选择子属性

时间:2018-06-17 11:54:08

标签: powershell object substring filtering event-viewer

我在PowerShell中有很长的对象列表(更具体地说,是Get-EventLog cmdlet中的Windows事件列表),我想要过滤这些对象以查找访问我的计算机的人员。我使用了以下内容:

Get-EventLog -LogName Security -InstanceId 4672 | Select-Object -Property TimeGenerated, ReplacementStrings[1]

但输出如下:

TimeGenerated        ReplacementStrings[1]
-------------        ---------------------
6/17/2018 2:28:33 PM
6/17/2018 2:28:33 PM
6/17/2018 2:28:33 PM
6/17/2018 2:28:33 PM
6/17/2018 2:28:33 PM
...

我的右栏没有输出。

如果我从[1]移除ReplacementString

TimeGenerated        ReplacementStrings
-------------        ------------------
6/17/2018 2:28:33 PM {S-1-2-3-4, Username1, blablabla...}
6/17/2018 2:28:33 PM {S-1-2-3-4, Username2, blablabla...}
6/17/2018 2:28:33 PM {S-1-2-3-4, Username2, blablabla...}
6/17/2018 2:28:33 PM {S-1-2-3-4, Username1, blablabla...}
6/17/2018 2:28:33 PM {S-1-2-3-4, Username3, blablabla...}
...

我只想要ReplacementStrings的用户名字段。

我可以使用foreach循环并手动集中到一个字符串,但我想将这些项目作为对象供以后使用,所以这不适合我。

1 个答案:

答案 0 :(得分:4)

使用计算属性:

Get-WinEvent ... |
  Select-Object -Property TimeGenerated,
                          @{Name='Username'; Expression={$_.ReplacementStrings[1]}}