2

所以我在 PowerShell 中有一个具有以下属性的对象(这是它的 JSON 表示,仅包含一项):

        "NetworkResourcePermittedUsers": [
          {
            "PermittedUser": {
              "UserName": "somedomain\\someuser"
            },
            "SecurityAccessLevel": {
              "Level": "Read"
            },
            "SecurityAccessMode": {
              "Mode": "Allow"
            }
          }
        ]

我想要做的是NetworkResourcePermittedUsers根据Level里面的字段过滤我的数组SecurityAccessLevel,所以基本上:SecurityAccessLevel.Level

在 LINQ 中,我会执行以下操作:

networkResourcePermittedUsers.Any(x => x.SecurityAccessLevel.Level.Equals("myvalue"))

我知道在 PowerShell 中我可以使用类似的东西:

$networkResourcePermittedUsers -contains "value"

但在这种情况下,-contains参数假定我有一个由值对象(、、等)组成stringint数组

那么有没有办法使用-contains参数来过滤复杂的对象图?

就像是:

#this is bad code -- doesn't work
$networkResourcePermittedUsers -contains "myvalue" -path SecurityAccessLevel.Level
4

1 回答 1

8

您不能使用 -contains 运算符,但可以使用类似于 LINQ 的管道:

$networkResourcePermittedUsers | Where-Object {
    $_.SecurityAccessLevel.Level -eq 'myvalue' }
于 2013-09-24T22:30:59.000 回答