2013-09-24 132 views
1

所以我一直在PowerShell中的以下屬性的對象(這是隻包含一個項目JSON表示):篩選對象的複雜陣列優雅的方式

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

我想要做的是過濾我NetworkResourcePermittedUsers陣列基於內部SecurityAccessLevelLevel場,所以基本上: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 

回答

7

您不能使用-contains運算符,但你可以使用管道類似於LINQ:

$networkResourcePermittedUsers | Where-Object { 
    $_.SecurityAccessLevel.Level -eq 'myvalue' }