所以我在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
参数假设我有一个由值对象(string
,int
等组成的数组)
那么有没有办法使用-contains
参数来过滤复杂的对象图?
类似的东西:
#this is bad code -- doesn't work
$networkResourcePermittedUsers -contains "myvalue" -path SecurityAccessLevel.Level
答案 0 :(得分:8)
您不能使用-contains运算符,但可以使用类似于LINQ的管道:
$networkResourcePermittedUsers | Where-Object {
$_.SecurityAccessLevel.Level -eq 'myvalue' }