【问题标题】:Selecting a sub-property in PowerShell在 PowerShell 中选择子属性
【发布时间】:2018-11-26 12:37:29
【问题描述】:

我在 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
...

我的右栏没有输出。

如果我从ReplacementString 中删除[1]

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 循环并手动集中到一个字符串,但我想将这些项目保留为对象以供以后使用,所以这不是我的选择。

【问题讨论】:

    标签: powershell object substring filtering event-viewer


    【解决方案1】:

    使用计算属性:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-11
      • 2013-07-09
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 2014-05-17
      • 1970-01-01
      相关资源
      最近更新 更多