在PowerShell中选择子属性

ede*_*881 2 powershell filtering substring object event-viewer

我在PowerShell中有一长串对象(更具体地说是Get-EventLogcmdlet 中的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
...
Run Code Online (Sandbox Code Playgroud)

我在所有正确的列上都没有输出。

如果我[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...}
...
Run Code Online (Sandbox Code Playgroud)

我只需要来自的用户名字段ReplacementStrings

我可以使用foreach循环并手动将其集中到一个字符串,但是我想将这些项目保留为对象供以后使用,所以这对我来说不是一个选择。

Mat*_*sen 5

使用计算的属性:

Get-WinEvent ... |
  Select-Object -Property TimeGenerated,
                          @{Name='Username'; Expression={$_.ReplacementStrings[1]}}
Run Code Online (Sandbox Code Playgroud)