【发布时间】:2014-10-28 05:48:14
【问题描述】:
我经常需要根据某些条件从集合中删除一些对象,并且每次我都需要这样做:
Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" } | % { $_.Delete() }
但这只会删除第一个元素,然后抛出异常“集合已修改...bla bla...”。我明白了例外的意义,但是推荐的方法是什么?
我通常使用一些数组itemsToDelete,然后我再次遍历该数组并执行删除操作:
$itemsToDelete = @()
Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" } | % { $itemsToDelete += $_ }
$itemsToDelete | % { $_.Delete() }
我想知道这是否足够好或者什么是更好的方法。
【问题讨论】:
-
我不熟悉 powershell。关于泛型,我有一个类似的问题。也许这会有所帮助。 stackoverflow.com/questions/2995811/…