我经常需要根据某些条件从集合中删除一些对象,并且每次我都需要这样做:
Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" } | % { $_.Delete() }
但这只会删除第一个元素,然后抛出异常“集合已修改......bla bla......”。我明白了例外的意义,但是推荐的方法是什么?
我通常使用一些数组itemsToDelete
,然后再次遍历该数组并执行删除操作:
$itemsToDelete = @()
Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" } | % { $itemsToDelete += $_ }
$itemsToDelete | % { $_.Delete() }
我想知道这是否足够好或者更好的方法是什么。