Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 哈希表的过滤器数组_Powershell - Fatal编程技术网

Powershell 哈希表的过滤器数组

Powershell 哈希表的过滤器数组,powershell,Powershell,我有一个哈希表数组,我试图将它过滤到那些属性值为true的人,但我所做的看起来并不好 # object looks like this $array = @( @{ Name = 'First'; Passed = $true } @{ Name = 'Second'; Passed = $false } ) function Filter { Param($array) $filtered = @() foreach ($item in $array

我有一个哈希表数组,我试图将它过滤到那些属性值为true的人,但我所做的看起来并不好

# object looks like this
$array = @(
    @{ Name = 'First'; Passed = $true }
    @{ Name = 'Second'; Passed = $false }
)

function Filter {
    Param($array)
    $filtered = @()

    foreach ($item in $array) {
        if ($item.Passed = $true) {
            $filtered += $item
        }
    }

    return $filtered
}

是否有其他方法可以获取所有传递了property=$True的元素,而无需将这些元素添加到另一个数组中。

只需将数组导入Where对象,如下所示:

$array = @(
    @{ Name = 'First'; Passed = $True }
    @{ Name = 'First'; Passed = $False }
)

$array = $array | Where-Object Passed -EQ $True

$newarray=@$array |其中的对象{$\.Passed}@AnsgarWiechers不会捕获任何具有真实传递的对象吗?i、 e.不仅仅是那些值为$true@MikeShepard对但是,由于键似乎只有布尔值,这不应该是一个问题。否则,请将条件更改为$\已传递-eq$true。请注意,如果Where对象筛选器返回的项少于2项,则不会给出数组结果。很好,将其更改为$array=@$array | Where Object Passed-eq$true可以解决这一问题。